From: <ha...@us...> - 2008-08-28 12:59:56
|
Revision: 9799 http://jmol.svn.sourceforge.net/jmol/?rev=9799&view=rev Author: hansonr Date: 2008-08-28 12:59:51 +0000 (Thu, 28 Aug 2008) Log Message: ----------- version=11.6.RC12_dev # cml reader fix for not applying symmetry to first model Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java 2008-08-28 12:58:58 UTC (rev 9798) +++ trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java 2008-08-28 12:59:51 UTC (rev 9799) @@ -206,6 +206,7 @@ state = SYMMETRY; if (atts.containsKey("spaceGroup")) { localSpaceGroupName = (String) atts.get("spaceGroup"); + applySymmetry(); } } else if (name.equals("module")) { moduleCount++; @@ -674,8 +675,9 @@ public void applySymmetry() { if (moduleCount > 0 || !haveMolecule) return; - if (localSpaceGroupName != null) - parent.setSpaceGroupName(localSpaceGroupName); + if (localSpaceGroupName == null) + return; + parent.setSpaceGroupName(localSpaceGroupName); try { parent.applySymmetry(); } catch (Exception e) { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-28 12:58:58 UTC (rev 9798) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-28 12:59:51 UTC (rev 9799) @@ -3,6 +3,7 @@ version=11.6.RC12_dev +# cml reader fix for not applying symmetry to first model # translation: added GT._ calls for HTML templates and JS in WebExport # ----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-29 17:54:13
|
Revision: 9806 http://jmol.svn.sourceforge.net/jmol/?rev=9806&view=rev Author: hansonr Date: 2008-08-29 17:54:08 +0000 (Fri, 29 Aug 2008) Log Message: ----------- version=11.6.RC12_dev # new feature: applet parameter jmolSetCallback("maximumSize", nnn) -- sets maximum size of applet when resizing to this value Modified Paths: -------------- trunk/Jmol/src/org/jmol/applet/Jmol.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/applet/Jmol.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-08-29 11:45:47 UTC (rev 9805) +++ trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-08-29 17:54:08 UTC (rev 9806) @@ -77,6 +77,11 @@ * To disable ALL access to JavaScript (as, for example, in a Wiki) * remove the MAYSCRIPT tag or set MAYSCRIPT="false" * + * To set a maximum size for the applet if resizable: + * + * [param name="maximumSize" value="nnnn" /] + * + * * You can specify that the signed or unsign applet or application should * use an independent command thread (EXCEPT for scripts containing the "javascript" command) * @@ -240,9 +245,12 @@ options += "-signed"; if (getBooleanValue("useCommandThread", isSigned)) options += "-threaded"; - String appletProxy = getValue("JmolAppletProxy", null); - if (appletProxy != null) - options += "-appletProxy " + appletProxy; + String s = getValue("MaximumSize", null); + if (s != null) + options += "-maximumSize " + s; + s = getValue("JmolAppletProxy", null); + if (s != null) + options += "-appletProxy " + s; System.out.println("setAppletContext: " + options); viewer.setAppletContext(fullName, appletWrapper.getDocumentBase(), appletWrapper.getCodeBase(), options); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-29 11:45:47 UTC (rev 9805) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-29 17:54:08 UTC (rev 9806) @@ -3,6 +3,7 @@ version=11.6.RC12_dev +# new feature: applet parameter jmolSetCallback("maximumSize", nnn) -- sets maximum size of applet when resizing to this value # cml reader fix for not applying symmetry to first model # translation: added GT._ calls for HTML templates and JS in WebExport # ----------------------------------------------------------------------------- Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-29 11:45:47 UTC (rev 9805) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-29 17:54:08 UTC (rev 9806) @@ -283,6 +283,10 @@ appletProxy = str.substring(i + 13); str = str.substring(0, i); } + if (isApplet && (i = str.indexOf("-maximumSize ")) >= 0) { + setMaximumSize(Parser.parseInt(str.substring(i + 13))); + str = str.substring(0, i); + } if (str.indexOf("-b") >= 0) g3d.setBackgroundTransparent(true); useCommandThread = (str.indexOf("-t") >= 0); @@ -3108,9 +3112,17 @@ //final Rectangle rectClip = new Rectangle(); + private int maximumSize = Integer.MAX_VALUE; + + private void setMaximumSize(int x) { + maximumSize = Math.max(x, 100); + } + public void setScreenDimension(Dimension dim) { // There is a bug in Netscape 4.7*+MacOS 9 when comparing dimension objects // so don't try dim1.equals(dim2) + dim.height = Math.min(dim.height, maximumSize); + dim.width = Math.min(dim.width, maximumSize); int height = dim.height; int width = dim.width; if (getStereoMode() == JmolConstants.STEREO_DOUBLE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-30 13:31:24
|
Revision: 9813 http://jmol.svn.sourceforge.net/jmol/?rev=9813&view=rev Author: hansonr Date: 2008-08-30 13:31:21 +0000 (Sat, 30 Aug 2008) Log Message: ----------- 11.6.RC12 VERSION Modified Paths: -------------- trunk/Jmol/src/org/jmol/minimize/forcefield/Calculations.java trunk/Jmol/src/org/jmol/minimize/forcefield/CalculationsUFF.java trunk/Jmol/src/org/jmol/modelset/AtomCollection.java Modified: trunk/Jmol/src/org/jmol/minimize/forcefield/Calculations.java =================================================================== --- trunk/Jmol/src/org/jmol/minimize/forcefield/Calculations.java 2008-08-30 13:31:00 UTC (rev 9812) +++ trunk/Jmol/src/org/jmol/minimize/forcefield/Calculations.java 2008-08-30 13:31:21 UTC (rev 9813) @@ -75,7 +75,6 @@ bonds = minBonds; this.angles = angles; this.torsions = torsions; - this.partialCharges = partialCharges; this.constraints = constraints; atomCount = atoms.length; bondCount = bonds.length; @@ -87,6 +86,7 @@ } if (!havePartialCharges) partialCharges = null; + this.partialCharges = partialCharges; } boolean haveParams() { Modified: trunk/Jmol/src/org/jmol/minimize/forcefield/CalculationsUFF.java =================================================================== --- trunk/Jmol/src/org/jmol/minimize/forcefield/CalculationsUFF.java 2008-08-30 13:31:00 UTC (rev 9812) +++ trunk/Jmol/src/org/jmol/minimize/forcefield/CalculationsUFF.java 2008-08-30 13:31:21 UTC (rev 9813) @@ -711,12 +711,16 @@ switch (elemNo) { case 15: // P phi *= 84.4339; + break; case 33: // As phi *= 86.9735; + break; case 51: // Sb phi *= 87.7047; + break; case 83: // Bi phi *= 90.0; + break; } double cosPhi = Math.cos(phi); a0 = cosPhi * cosPhi; Modified: trunk/Jmol/src/org/jmol/modelset/AtomCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2008-08-30 13:31:00 UTC (rev 9812) +++ trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2008-08-30 13:31:21 UTC (rev 9813) @@ -1323,6 +1323,7 @@ for (int i = atomCount; --i >= 0;) if (atoms[i].isPurine()) bs.set(i); + return bs; case Token.pyrimidine: for (int i = atomCount; --i >= 0;) if (atoms[i].isPyrimidine()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-30 19:04:37
|
Revision: 9818 http://jmol.svn.sourceforge.net/jmol/?rev=9818&view=rev Author: hansonr Date: 2008-08-30 19:04:33 +0000 (Sat, 30 Aug 2008) Log Message: ----------- 11.6.RC12 (more) new features: set atomPicking/set bondPicking Modified Paths: -------------- trunk/Jmol/src/org/jmol/modelset/ModelSet.java trunk/Jmol/src/org/jmol/shape/Sticks.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/StateManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/modelset/ModelSet.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelSet.java 2008-08-30 18:59:41 UTC (rev 9817) +++ trunk/Jmol/src/org/jmol/modelset/ModelSet.java 2008-08-30 19:04:33 UTC (rev 9818) @@ -369,14 +369,20 @@ return shape.checkObjectHovered(x, y, bsVisible); } - public Point3f checkObjectClicked(int x, int y, int modifiers, BitSet bsVisible) { + public Point3f checkObjectClicked(int x, int y, int modifiers, + BitSet bsVisible) { Shape shape = shapes[JmolConstants.SHAPE_ECHO]; Point3f pt = null; - if (shape != null && modifiers != 0 + if (modifiers != 0 && viewer.getBondPicking() + && (pt = shapes[JmolConstants.SHAPE_STICKS].checkObjectClicked(x, y, + modifiers, bsVisible)) != null) + return pt; + + if (shape != null && modifiers != 0 && (pt = shape.checkObjectClicked(x, y, modifiers, bsVisible)) != null) return pt; - return ((shape = shapes[JmolConstants.SHAPE_DRAW]) == null ? null - : shape.checkObjectClicked(x, y, modifiers, bsVisible)); + return ((shape = shapes[JmolConstants.SHAPE_DRAW]) == null ? null : shape + .checkObjectClicked(x, y, modifiers, bsVisible)); } public void checkObjectDragged(int prevX, int prevY, int deltaX, int deltaY, Modified: trunk/Jmol/src/org/jmol/shape/Sticks.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Sticks.java 2008-08-30 18:59:41 UTC (rev 9817) +++ trunk/Jmol/src/org/jmol/shape/Sticks.java 2008-08-30 19:04:33 UTC (rev 9818) @@ -33,7 +33,11 @@ import java.util.BitSet; import java.util.Hashtable; +import javax.vecmath.Point3f; +import javax.vecmath.Point3i; + import org.jmol.g3d.Graphics3D; +import org.jmol.modelset.Atom; import org.jmol.modelset.Bond; import org.jmol.modelset.BondIterator; @@ -214,4 +218,55 @@ + (haveTainted ? getShapeCommands(temp2, null, -1, "select BONDS") + "\n" : ""); } + + public Point3f checkObjectClicked(int x, int y, int modifiers, + BitSet bsVisible) { + Point3f pt = new Point3f(); + Bond bond = findPickedBond(x, y, bsVisible, pt); + if (bond == null) + return null; + viewer.setStatusAtomPicked(-3, "[\"bond\",\"" + bond.getIdentity() + "\"," + pt.x + "," + pt.y + "," + pt.z + "]"); + return pt; + } + + private final static int MAX_BOND_CLICK_DISTANCE_SQUARED = 10 * 10; + + private Bond findPickedBond(int x, int y, BitSet bsVisible, Point3f pt) { + int dmin2 = MAX_BOND_CLICK_DISTANCE_SQUARED; + if (g3d.isAntialiased()) { + x <<= 1; + y <<= 1; + dmin2 <<= 1; + } + Bond pickedBond = null; + Point3f v = new Point3f(); + Bond[] bonds = modelSet.getBonds(); + for (int i = modelSet.getBondCount(); --i >= 0;) { + Bond bond = bonds[i]; + if (bond.getShapeVisibilityFlags() == 0) + continue; + Atom atom1 = bond.getAtom1(); + Atom atom2 = bond.getAtom2(); + if (!atom1.isVisible() || !atom2.isVisible()) + continue; + v.set(atom1); + v.add(atom2); + v.scale(0.5f); + int d2 = coordinateInRange(x, y, v, dmin2); + if (d2 >= 0) { + dmin2 = d2; + pickedBond = bond; + pt.set(v); + } + } + return pickedBond; + } + + private final Point3i ptXY = new Point3i(); + private int coordinateInRange(int x, int y, Point3f vertex, int dmin2) { + viewer.transformPoint(vertex, ptXY); + int d2 = (x - ptXY.x) * (x - ptXY.x) + (y - ptXY.y) * (y - ptXY.y); + return (d2 < dmin2 ? d2 : -1); + } + } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-30 18:59:41 UTC (rev 9817) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-30 19:04:33 UTC (rev 9818) @@ -3,6 +3,8 @@ version=11.6.RC12 +# new feature: set atomPicking TRUE/FALSE +# new feature: set bondPicking TRUE/FALSE # bug fix: draw pointgroup when principalPlane == null # bug fix: findbugs corrections in minimize.forcefield, modelset.AtomCollection, shapespecial.DrawRenderer # new feature: applet parameter jmolSetCallback("maximumSize", nnn) -- sets maximum size of applet when resizing to this value Modified: trunk/Jmol/src/org/jmol/viewer/StateManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StateManager.java 2008-08-30 18:59:41 UTC (rev 9817) +++ trunk/Jmol/src/org/jmol/viewer/StateManager.java 2008-08-30 19:04:33 UTC (rev 9818) @@ -615,6 +615,8 @@ float dipoleScale = 1.0f; boolean disablePopupMenu = false; boolean drawPicking = false; + boolean bondPicking = false; + boolean atomPicking = true; String helpPath = JmolConstants.DEFAULT_HELP_PATH; boolean fontScaling = false; boolean hideNameInPopup = false; @@ -1098,6 +1100,7 @@ setParameterValue("appendNew", appendNew); setParameterValue("appletProxy", appletProxy); setParameterValue("applySymmetryToBonds", applySymmetryToBonds); + setParameterValue("atomPicking", atomPicking); setParameterValue("autoBond", autoBond); setParameterValue("autoFps", autoFps); setParameterValue("axesMode", axesMode); @@ -1109,6 +1112,7 @@ setParameterValue("axesOrientationRasmol", axesOrientationRasmol); setParameterValue("backgroundModel", 0); setParameterValue("bondModeOr", bondModeOr); + setParameterValue("bondPicking", bondPicking); setParameterValue("bondRadiusMilliAngstroms", bondRadiusMilliAngstroms); setParameterValue("bondTolerance", bondTolerance); setParameterValue("cameraDepth", cameraDepth); Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-30 18:59:41 UTC (rev 9817) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-30 19:04:33 UTC (rev 9818) @@ -2331,7 +2331,7 @@ } int findNearestAtomIndex(int x, int y) { - return (modelSet == null ? -1 : modelSet.findNearestAtomIndex(x, y)); + return (modelSet == null || !getAtomPicking() ? -1 : modelSet.findNearestAtomIndex(x, y)); } void selectRectangle(Rectangle rect, int modifiers) { @@ -3794,6 +3794,14 @@ return global.drawPicking; } + public boolean getBondPicking() { + return global.bondPicking; + } + + private boolean getAtomPicking() { + return global.atomPicking; + } + private void setPickingStyle(String style) { int pickingStyle = JmolConstants.getPickingStyle(style); if (pickingStyle < 0) @@ -4600,7 +4608,19 @@ boolean notFound = false; boolean doRepaint = true; while (true) { - + + // 11.6.RC13 + if (key.equalsIgnoreCase("atomPicking")) { + global.atomPicking = value; + break; + } + + // 11.6.RC13 + if (key.equalsIgnoreCase("bondPicking")) { + global.bondPicking = value; + break; + } + //11.5.52 if (key.equalsIgnoreCase("selectAllModels")) { global.selectAllModels = value; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-31 01:38:47
|
Revision: 9825 http://jmol.svn.sourceforge.net/jmol/?rev=9825&view=rev Author: hansonr Date: 2008-08-31 01:38:43 +0000 (Sun, 31 Aug 2008) Log Message: ----------- version=11.6.RC12 # bug fix: getProperty("atominfo",{atom expression}) not working for "atominfo[0].xxx # bug fix: getProperty("modelinfo",{atom expression}) not working Modified Paths: -------------- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/modelset/ModelLoader.java trunk/Jmol/src/org/jmol/viewer/PropertyManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-08-31 01:15:07 UTC (rev 9824) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-08-31 01:38:43 UTC (rev 9825) @@ -1127,7 +1127,7 @@ return "no header information found"; } - public Hashtable getModelInfo() { + public Hashtable getModelInfo(BitSet bsModels) { Hashtable info = new Hashtable(); info.put("modelSetName", modelSetName); info.put("modelCount", new Integer(modelCount)); @@ -1135,8 +1135,13 @@ .valueOf(modelSetHasVibrationVectors())); if (modelSetProperties != null) info.put("modelSetProperties", modelSetProperties); + info.put("modelCountSelected", new Integer(BitSetUtil.cardinalityOf(bsModels))); + info.put("modelsSelected", bsModels); Vector vModels = new Vector(); + for (int i = 0; i < modelCount; ++i) { + if (!bsModels.get(i)) + continue; Hashtable model = new Hashtable(); model.put("_ipt", new Integer(i)); model.put("num", new Integer(getModelNumber(i))); @@ -2453,12 +2458,14 @@ return sb.toString(); } - public Hashtable getAuxiliaryInfo() { + public Hashtable getAuxiliaryInfo(BitSet bsModels) { Hashtable info = getModelSetAuxiliaryInfo(); if (info == null) return info; Vector models = new Vector(); for (int i = 0; i < modelCount; ++i) { + if (bsModels != null && !bsModels.get(i)) + continue; Hashtable modelinfo = getModelAuxiliaryInfo(i); models.addElement(modelinfo); } @@ -2540,9 +2547,10 @@ public Vector getAllBondInfo(BitSet bs) { Vector V = new Vector(); + int thisAtom = (BitSetUtil.cardinalityOf(bs) == 1 ? BitSetUtil.firstSetBit(bs) : -1); for (int i = 0; i < bondCount; i++) - if (bs.get(bonds[i].atom1.atomIndex) - && bs.get(bonds[i].atom2.atomIndex)) + if (thisAtom >= 0? (bonds[i].atom1.atomIndex == thisAtom || bonds[i].atom2.atomIndex == thisAtom) + : bs.get(bonds[i].atom1.atomIndex) && bs.get(bonds[i].atom2.atomIndex)) V.addElement(getBondInfo(i)); return V; } Modified: trunk/Jmol/src/org/jmol/modelset/ModelLoader.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelLoader.java 2008-08-31 01:15:07 UTC (rev 9824) +++ trunk/Jmol/src/org/jmol/modelset/ModelLoader.java 2008-08-31 01:38:43 UTC (rev 9825) @@ -307,7 +307,7 @@ private void initializeMerge() { merge(mergeModelSet); bsSymmetry = mergeModelSet.bsSymmetry; - Hashtable info = mergeModelSet.getAuxiliaryInfo(); + Hashtable info = mergeModelSet.getAuxiliaryInfo(null); String[] mergeGroup3Lists = (String[]) info.get("group3Lists"); int[][] mergeGroup3Counts = (int[][]) info.get("group3Counts"); if (mergeGroup3Lists != null) { Modified: trunk/Jmol/src/org/jmol/viewer/PropertyManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/PropertyManager.java 2008-08-31 01:15:07 UTC (rev 9824) +++ trunk/Jmol/src/org/jmol/viewer/PropertyManager.java 2008-08-31 01:38:43 UTC (rev 9825) @@ -72,7 +72,7 @@ "jmolStatus" , "statusNameList", "", "jmolViewer" , "", "", "messageQueue" , "", "", - "auxiliaryInfo" , "", "", + "auxiliaryInfo" , atomExpression, "*", "boundBoxInfo" , "", "", "dataInfo" , "<data type>", "types", @@ -312,7 +312,7 @@ case PROP_ATOM_INFO: return viewer.getAllAtomInfo(myParam); case PROP_AUXILIARY_INFO: - return viewer.getAuxiliaryInfo(); + return viewer.getAuxiliaryInfo(myParam); case PROP_BOND_INFO: return viewer.getAllBondInfo(myParam); case PROP_BOUNDBOX_INFO: Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-31 01:15:07 UTC (rev 9824) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-31 01:38:43 UTC (rev 9825) @@ -2462,8 +2462,8 @@ return modelSet.getModelInfo(getModelBitSet(getAtomBitSet(atomExpression))); } - public Hashtable getAuxiliaryInfo() { - return modelSet.getAuxiliaryInfo(); + public Hashtable getAuxiliaryInfo(Object atomExpression) { + return modelSet.getAuxiliaryInfo(getModelBitSet(getAtomBitSet(atomExpression))); } public Hashtable getShapeInfo() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-03 19:10:12
|
Revision: 9847 http://jmol.svn.sourceforge.net/jmol/?rev=9847&view=rev Author: hansonr Date: 2008-09-03 19:09:59 +0000 (Wed, 03 Sep 2008) Log Message: ----------- version=11.6.RC13_dev # bug fix/new feature: HIDE/DiSPLAY/DELETE/COLOR $*xxx* extended to ECHO Modified Paths: -------------- trunk/Jmol/src/org/jmol/shape/Echo.java trunk/Jmol/src/org/jmol/shape/Object2dShape.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/shape/Echo.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Echo.java 2008-09-01 20:15:09 UTC (rev 9846) +++ trunk/Jmol/src/org/jmol/shape/Echo.java 2008-09-03 19:09:59 UTC (rev 9847) @@ -25,6 +25,7 @@ package org.jmol.shape; import org.jmol.util.Logger; +import org.jmol.util.TextFormat; import org.jmol.g3d.*; import java.awt.Image; @@ -57,7 +58,7 @@ if (Logger.debugging) { Logger.debug("Echo.setProperty(" + propertyName + "," + value + ")"); } - + if ("scalereference" == propertyName) { if (currentObject != null) { float val = ((Float) value).floatValue(); @@ -65,10 +66,11 @@ } return; } - + if ("xyz" == propertyName) { if (currentObject != null && viewer.getFontScaling()) - currentObject.setScalePixelsPerMicron(viewer.getScalePixelsPerAngstrom() * 10000f); + currentObject.setScalePixelsPerMicron(viewer + .getScalePixelsPerAngstrom() * 10000f); // continue on to Object2d setting } @@ -85,25 +87,37 @@ ((Text) currentObject).setImage(image); return; } - + if ("thisID" == propertyName) { + String target = (String) value; + currentObject = (Text) objects.get(target); + if (currentObject == null && TextFormat.isWild(target)) + thisID = target.toUpperCase(); + return; + } + if ("hidden" == propertyName) { - boolean isHidden = ((Boolean)value).booleanValue(); - if (currentObject == null) { - if (isAll) { + boolean isHidden = ((Boolean) value).booleanValue(); + if (currentObject == null) + if (isAll || thisID != null) { Enumeration e = objects.elements(); - while (e.hasMoreElements()) - ((Text) e.nextElement()).hidden = isHidden; + while (e.hasMoreElements()) { + Text text = (Text) e.nextElement(); + if (isAll + || TextFormat.isMatch(text.target.toUpperCase(), thisID, true, + true)) + text.hidden = isHidden; + } + return; } - return; - } ((Text) currentObject).hidden = isHidden; return; } if (Object2d.setProperty(propertyName, value, currentObject)) return; - + if ("target" == propertyName) { + thisID = null; String target = ((String) value).intern().toLowerCase(); if (target == "none" || target == "all") { // process in Object2dShape @@ -143,6 +157,20 @@ super.setProperty(propertyName, value, null); } + public Object getProperty(String property, int index) { + if (property.startsWith("checkID:")) { + // returns FIRST match + String key = property.substring(8).toUpperCase(); + boolean isWild = TextFormat.isWild(key); + Enumeration e = objects.elements(); + while (e.hasMoreElements()) { + String id = ((Text) e.nextElement()).target.toUpperCase(); + if (id.equals(key) || isWild && TextFormat.isMatch(id, key, true, true)) + return id; + } + } + return null; + } public String getShapeState() { StringBuffer s = new StringBuffer("\n set echo off;\n"); Enumeration e = objects.elements(); Modified: trunk/Jmol/src/org/jmol/shape/Object2dShape.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Object2dShape.java 2008-09-01 20:15:09 UTC (rev 9846) +++ trunk/Jmol/src/org/jmol/shape/Object2dShape.java 2008-09-03 19:09:59 UTC (rev 9847) @@ -8,6 +8,7 @@ import org.jmol.g3d.Font3D; import org.jmol.util.Logger; +import org.jmol.util.TextFormat; import org.jmol.viewer.Viewer; public class Object2dShape extends Shape { @@ -21,7 +22,8 @@ Object currentBgColor; float currentTranslucentLevel; float currentBgTranslucentLevel; - + protected String thisID; + boolean isHover; boolean isAll; @@ -38,6 +40,24 @@ return; } + if ("delete" == propertyName) { + if (currentObject == null) + if (isAll || thisID != null) { + Enumeration e = objects.elements(); + while (e.hasMoreElements()) { + Text text = (Text) e.nextElement(); + if (isAll + || TextFormat.isMatch(text.target.toUpperCase(), thisID, true, + true)) + objects.remove(text.target); + } + return; + } + objects.remove(currentObject.target); + currentObject = null; + return; + } + if ("off" == propertyName) { if (isAll) { objects = new Hashtable(); @@ -65,7 +85,7 @@ currentObject.setModel(modelIndex); return; } - + if ("align" == propertyName) { String align = (String) value; if (currentObject == null) { @@ -97,14 +117,18 @@ if ("color" == propertyName) { currentColor = value; - if (currentObject == null) { - if (isAll) { + if (currentObject == null) + if (isAll || thisID != null) { Enumeration e = objects.elements(); - while (e.hasMoreElements()) - ((Text) e.nextElement()).setColix(value); + while (e.hasMoreElements()) { + Text text = (Text) e.nextElement(); + if (isAll + || TextFormat.isMatch(text.target.toUpperCase(), thisID, true, + true)) + text.setColix(value); + } + return; } - return; - } currentObject.setColix(value); return; } @@ -138,9 +162,9 @@ currentObject.setTranslucent(translucentLevel, isBackground); return; } - + if (propertyName == "deleteModelAtoms") { - int modelIndex = ((int[])((Object[])value)[2])[0]; + int modelIndex = ((int[]) ((Object[]) value)[2])[0]; Enumeration e = objects.elements(); while (e.hasMoreElements()) { Text text = (Text) e.nextElement(); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-01 20:15:09 UTC (rev 9846) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-03 19:09:59 UTC (rev 9847) @@ -3,6 +3,8 @@ version=11.6.RC13_dev + +# bug fix/new feature: HIDE/DiSPLAY/DELETE/COLOR $*xxx* extended to ECHO # bug fix: findbugs input stream closure # translation: add GT.escapeHTML and stricter checking for special characters in file names # used by web export. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-06 14:32:51
|
Revision: 9848 http://jmol.svn.sourceforge.net/jmol/?rev=9848&view=rev Author: hansonr Date: 2008-09-06 14:32:48 +0000 (Sat, 06 Sep 2008) Log Message: ----------- version=11.6.RC13_dev # bug fix: y-offset for echo text and images Modified Paths: -------------- trunk/Jmol/src/org/jmol/shape/Echo.java trunk/Jmol/src/org/jmol/shape/Object2d.java trunk/Jmol/src/org/jmol/shape/Text.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/shape/Echo.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Echo.java 2008-09-03 19:09:59 UTC (rev 9847) +++ trunk/Jmol/src/org/jmol/shape/Echo.java 2008-09-06 14:32:48 UTC (rev 9848) @@ -137,7 +137,7 @@ } text = new Text(viewer, g3d, g3d.getFont3D(FONTFACE, FONTSIZE), target, COLOR, valign, halign, 0); - text.setAdjustForWindow(true); // when a box is around it + text.setAdjustForWindow(true); objects.put(target, text); if (currentFont != null) text.setFont(currentFont); Modified: trunk/Jmol/src/org/jmol/shape/Object2d.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Object2d.java 2008-09-03 19:09:59 UTC (rev 9847) +++ trunk/Jmol/src/org/jmol/shape/Object2d.java 2008-09-06 14:32:48 UTC (rev 9848) @@ -280,82 +280,6 @@ } } - protected void setPosition(float scale) { - float xLeft, xCenter, xRight; - boolean is3dEcho = (xyz != null); - if (valign == VALIGN_XY || valign == VALIGN_XYZ) { - float x = (movableXPercent != Integer.MAX_VALUE ? movableXPercent - * windowWidth / 100 : is3dEcho ? movableX : movableX * scale); - float offsetX = this.offsetX * scale; - xLeft = xRight = xCenter = x + offsetX; - //System.out.print("movableX = " + movableX + " offsetX = " + offsetX); - } else { - xLeft = 5 * scale; - xCenter = windowWidth / 2; - xRight = windowWidth - xLeft; - } - - // set box X from alignments - - boxXY[0] = xLeft; - switch (align) { - case ALIGN_CENTER: - boxXY[0] = xCenter - boxWidth / 2; - break; - case ALIGN_RIGHT: - boxXY[0] = xRight - boxWidth; - } - - // set box Y from alignments - - boxXY[1] = 0; - switch (valign) { - case VALIGN_TOP: - break; - case VALIGN_MIDDLE: - boxXY[1] = windowHeight / 2; - break; - case VALIGN_BOTTOM: - boxXY[1] = windowHeight; - break; - default: - float y = (movableYPercent != Integer.MAX_VALUE ? movableYPercent - * windowHeight / 100 : is3dEcho? movableY : movableY * scale); - float offsetY = this.offsetY * scale; - boxXY[1] = (is3dEcho ? y : (windowHeight - y)) + offsetY; - //System.out.println(" movableY = " + movableY + " offsetY = " + offsetY + " boxXY[1]=" + boxXY[1]); - } - } - - protected static void setPosition(float boxWidth, float boxHeight, - float xOffset, float yOffset, float[] boxXY) { - float xBoxOffset, yBoxOffset; - - // these are based on a standard |_ grid, so y is reversed. - if (xOffset > 0) { - xBoxOffset = xOffset; - } else { - xBoxOffset = -boxWidth; - if (xOffset == 0) - xBoxOffset /= 2; - else - xBoxOffset += xOffset; - } - - if (yOffset > 0) { - yBoxOffset = yOffset; - } else { - if (yOffset == 0) - yBoxOffset = -boxHeight / 2 - 2; - else - yBoxOffset = -boxHeight + yOffset; - } - - boxXY[0] += xBoxOffset; - boxXY[1] += yBoxOffset; - - } - protected void setBoxOffsetsInWindow(float margin, float vMargin, float vTop) { // not labels Modified: trunk/Jmol/src/org/jmol/shape/Text.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Text.java 2008-09-03 19:09:59 UTC (rev 9847) +++ trunk/Jmol/src/org/jmol/shape/Text.java 2008-09-06 14:32:48 UTC (rev 9848) @@ -148,6 +148,7 @@ textWidth = textHeight = 0; boxWidth = image.getWidth(null) * fontScale; boxHeight = image.getHeight(null) * fontScale; + ascent = 0; return; } if (text == null) { @@ -193,8 +194,6 @@ * imageFontScaling, boxXY); } else { setPosition(fontScale); - if (xyz != null) //3d echo - boxXY[1] -= (align == ALIGN_CENTER ? boxHeight : ascent) / 2; } boxX = boxXY[0]; boxY = boxXY[1]; @@ -202,7 +201,7 @@ // adjust positions if necessary if (adjustForWindow) - setBoxOffsetsInWindow(image == null ? fontScale * 5 : 0, isLabelOrHover ? 16 + setBoxOffsetsInWindow(/*image == null ? fontScale * 5 :*/ 0, isLabelOrHover ? 16 * fontScale + lineHeight : 0, boxY - textHeight); // draw the box if necessary @@ -250,6 +249,94 @@ drawPointer(g3d); } + private void setPosition(float scale) { + float xLeft, xCenter, xRight; + boolean is3dEcho = (xyz != null); + if (valign == VALIGN_XY || valign == VALIGN_XYZ) { + float x = (movableXPercent != Integer.MAX_VALUE ? movableXPercent + * windowWidth / 100 : is3dEcho ? movableX : movableX * scale); + float offsetX = this.offsetX * scale; + xLeft = xRight = xCenter = x + offsetX; + //System.out.print("movableX = " + movableX + " offsetX = " + offsetX); + } else { + xLeft = 5 * scale; + xCenter = windowWidth / 2; + xRight = windowWidth - xLeft; + } + + // set box X from alignments + + boxXY[0] = xLeft; + switch (align) { + case ALIGN_CENTER: + boxXY[0] = xCenter - boxWidth / 2; + break; + case ALIGN_RIGHT: + boxXY[0] = xRight - boxWidth; + } + + // set box Y from alignments + + boxXY[1] = 0; + switch (valign) { + case VALIGN_TOP: + break; + case VALIGN_MIDDLE: + boxXY[1] = windowHeight / 2; + break; + case VALIGN_BOTTOM: + boxXY[1] = windowHeight; + break; + default: + float y = (movableYPercent != Integer.MAX_VALUE ? movableYPercent + * windowHeight / 100 : is3dEcho ? movableY : movableY * scale); + boxXY[1] = (is3dEcho ? y : (windowHeight - y)) + offsetY * scale; + } + + System.out.print("boxXY[1]=" + boxXY[1]); + if (align == ALIGN_CENTER) + boxXY[1] -= (image != null ? boxHeight : xyz != null ? boxHeight + : ascent - boxHeight) / 2; + else if (image != null) + boxXY[1] -= 0; + else if (xyz != null) + boxXY[1] -= ascent / 2; + + System.out.println(" movableY = " + movableY + " offsetY = " + offsetY + + " boxXY[1]=" + boxXY[1] + " boxHeight=" + boxHeight + " ascent=" + + ascent + " " + text); + + } + + private static void setPosition(float boxWidth, float boxHeight, + float xOffset, float yOffset, float[] boxXY) { + float xBoxOffset, yBoxOffset; + + // these are based on a standard |_ grid, so y is reversed. + if (xOffset > 0) { + xBoxOffset = xOffset; + } else { + xBoxOffset = -boxWidth; + if (xOffset == 0) + xBoxOffset /= 2; + else + xBoxOffset += xOffset; + } + + if (yOffset > 0) { + yBoxOffset = yOffset; + } else { + if (yOffset == 0) + yBoxOffset = -boxHeight / 2 - 2; + else + yBoxOffset = -boxHeight + yOffset; + } + + boxXY[0] += xBoxOffset; + boxXY[1] += yBoxOffset; + + } + private static void showBox(JmolRendererInterface g3d, short colix, short bgcolix, int x, int y, int z, int zSlab, int boxWidth, int boxHeight, Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-03 19:09:59 UTC (rev 9847) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-06 14:32:48 UTC (rev 9848) @@ -3,7 +3,7 @@ version=11.6.RC13_dev - +# bug fix: y-offset for echo text and images # bug fix/new feature: HIDE/DiSPLAY/DELETE/COLOR $*xxx* extended to ECHO # bug fix: findbugs input stream closure # translation: add GT.escapeHTML and stricter checking for special characters in file names This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-07 04:09:35
|
Revision: 9852 http://jmol.svn.sourceforge.net/jmol/?rev=9852&view=rev Author: hansonr Date: 2008-09-07 04:09:32 +0000 (Sun, 07 Sep 2008) Log Message: ----------- version=11.6.RC14_dev # bug fix: ramachandran and quaternion derivative not indicating structure due to dropping last atom Modified Paths: -------------- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/modelset/Polymer.java trunk/Jmol/src/org/jmol/modelsetbio/AminoPolymer.java trunk/Jmol/src/org/jmol/modelsetbio/BioPolymer.java trunk/Jmol/src/org/jmol/modelsetbio/NucleicPolymer.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-06 18:22:34 UTC (rev 9851) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-07 04:09:32 UTC (rev 9852) @@ -889,7 +889,7 @@ Model model = models[i]; int nPoly = model.getBioPolymerCount(); for (int p = 0; p < nPoly; p++) - model.bioPolymers[p].getPdbData('s','p', 2, false, null, null, null, null, false); + model.bioPolymers[p].getPdbData('s','p', 2, false, null, null, null, null, false, new BitSet()); } } @@ -989,14 +989,15 @@ : type.length() > 13 && type.indexOf("ramachandran ") >= 0 ? type.charAt(13) : 'R'); int derivType = (type.indexOf("diff") < 0 ? 0 : type.indexOf("2") < 0 ? 1 : 2); - boolean isDraw = (type.indexOf("draw") >= 0); + boolean isDraw = (type.indexOf("draw") >= 0); BitSet bsAtoms = getModelAtomBitSet(modelIndex, false); int nPoly = model.getBioPolymerCount(); StringBuffer pdbATOM = new StringBuffer(); StringBuffer pdbCONECT = new StringBuffer(); + BitSet bsWritten = new BitSet(); for (int p = 0; p < nPoly; p++) model.bioPolymers[p].getPdbData(ctype, qtype, derivType, isDraw, - bsAtoms, pdbATOM, pdbCONECT, bsSelected, p == 0); + bsAtoms, pdbATOM, pdbCONECT, bsSelected, p == 0, bsWritten); pdbATOM.append(pdbCONECT); String s = pdbATOM.toString(); if (isDraw || s.length() == 0) @@ -1005,7 +1006,8 @@ if (ctype != 'R') remark += " quaternionFrame = \"" + qtype + "\""; remark += "\nREMARK 6 Jmol Version " + Viewer.getJmolVersion(); - remark += "\n\n" + getProteinStructureState(bsAtoms, false, ctype == 'R'); + bsSelected.and(bsAtoms); + remark += "\n\n" + getProteinStructureState(bsWritten, false, ctype == 'R'); return remark + s; } Modified: trunk/Jmol/src/org/jmol/modelset/Polymer.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/Polymer.java 2008-09-06 18:22:34 UTC (rev 9851) +++ trunk/Jmol/src/org/jmol/modelset/Polymer.java 2008-09-07 04:09:32 UTC (rev 9852) @@ -105,7 +105,8 @@ public void getPdbData(char ctype, char qtype, int derivType, boolean isDraw, BitSet bsAtoms, StringBuffer pdbATOM, - StringBuffer pdbCONECT, BitSet bsSelected, boolean addHeader) { + StringBuffer pdbCONECT, BitSet bsSelected, boolean addHeader, + BitSet bsWritten) { return; } } Modified: trunk/Jmol/src/org/jmol/modelsetbio/AminoPolymer.java =================================================================== --- trunk/Jmol/src/org/jmol/modelsetbio/AminoPolymer.java 2008-09-06 18:22:34 UTC (rev 9851) +++ trunk/Jmol/src/org/jmol/modelsetbio/AminoPolymer.java 2008-09-07 04:09:32 UTC (rev 9852) @@ -540,9 +540,9 @@ public void getPdbData(char ctype, char qtype, int derivType, boolean isDraw, BitSet bsAtoms, StringBuffer pdbATOM, StringBuffer pdbCONECT, - BitSet bsSelected, boolean addHeader) { + BitSet bsSelected, boolean addHeader, BitSet bsWritten) { getPdbData(this, ctype, qtype, derivType, isDraw, bsAtoms, pdbATOM, - pdbCONECT, bsSelected, addHeader); + pdbCONECT, bsSelected, addHeader, bsWritten); } } Modified: trunk/Jmol/src/org/jmol/modelsetbio/BioPolymer.java =================================================================== --- trunk/Jmol/src/org/jmol/modelsetbio/BioPolymer.java 2008-09-06 18:22:34 UTC (rev 9851) +++ trunk/Jmol/src/org/jmol/modelsetbio/BioPolymer.java 2008-09-07 04:09:32 UTC (rev 9852) @@ -472,8 +472,8 @@ final public static void getPdbData(BioPolymer p, char ctype, char qtype, int derivType, boolean isDraw, BitSet bsAtoms, StringBuffer pdbATOM, - StringBuffer pdbCONECT, - BitSet bsSelected, boolean addHeader) { + StringBuffer pdbCONECT, BitSet bsSelected, + boolean addHeader, BitSet bsWritten) { int atomno = Integer.MIN_VALUE; boolean isRamachandran = (ctype == 'R'); if (isRamachandran && !p.calcPhiPsiAngles()) @@ -558,7 +558,6 @@ pdbATOM.append(" NHX_______ NHY_______ NHZ_______"); pdbATOM.append("\n\n"); } - for (int m = 0; m < p.monomerCount; m++) { Monomer monomer = p.monomers[m]; if (bsAtoms == null || bsAtoms.get(monomer.getLeadAtomIndex())) { @@ -575,8 +574,10 @@ if (z < -90) z += 360; z -= 180; // center on 0 - if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) + if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) { + bsAtoms.clear(a.getAtomIndex()); continue; + } if (isDraw) { if (bsSelected != null && !bsSelected.get(a.getAtomIndex())) continue; @@ -785,6 +786,7 @@ pdbCONECT.append(TextFormat.formatString("%5i", "i", a .getAtomNumber())); pdbCONECT.append('\n'); + bsWritten.set(((Monomer)a.getGroup()).getLeadAtomIndex()); } atomno = a.getAtomNumber(); } Modified: trunk/Jmol/src/org/jmol/modelsetbio/NucleicPolymer.java =================================================================== --- trunk/Jmol/src/org/jmol/modelsetbio/NucleicPolymer.java 2008-09-06 18:22:34 UTC (rev 9851) +++ trunk/Jmol/src/org/jmol/modelsetbio/NucleicPolymer.java 2008-09-07 04:09:32 UTC (rev 9852) @@ -93,8 +93,8 @@ public void getPdbData(char ctype, char qtype, int derivType, boolean isDraw, BitSet bsAtoms, StringBuffer pdbATOM, StringBuffer pdbCONECT, - BitSet bsSelected, boolean addHeader) { + BitSet bsSelected, boolean addHeader, BitSet bsWritten) { getPdbData(this, ctype, qtype, derivType, isDraw, bsAtoms, pdbATOM, - pdbCONECT, bsSelected, addHeader); + pdbCONECT, bsSelected, addHeader, bsWritten); } } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-06 18:22:34 UTC (rev 9851) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-07 04:09:32 UTC (rev 9852) @@ -3,6 +3,7 @@ version=11.6.RC14_dev +# bug fix: ramachandran and quaternion derivative not indicating structure due to dropping last atom # ----------------------------------------------------------------------------- #version=11.6.RC13 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-11 19:10:42
|
Revision: 9869 http://jmol.svn.sourceforge.net/jmol/?rev=9869&view=rev Author: hansonr Date: 2008-09-11 19:10:37 +0000 (Thu, 11 Sep 2008) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/src/org/jmol/export/_Exporter.java trunk/Jmol/src/org/jmol/shape/Text.java Modified: trunk/Jmol/src/org/jmol/export/_Exporter.java =================================================================== --- trunk/Jmol/src/org/jmol/export/_Exporter.java 2008-09-11 19:10:04 UTC (rev 9868) +++ trunk/Jmol/src/org/jmol/export/_Exporter.java 2008-09-11 19:10:37 UTC (rev 9869) @@ -181,8 +181,7 @@ commandLineOptions = fileName.substring(pt + 3); fileName = fileName.substring(0, pt); } - viewer.createImage(fileName + ".spt", viewer.getSavedState("_Export"), - Integer.MIN_VALUE, 0, 0); + viewer.writeTextFile(fileName + ".spt", viewer.getSavedState("_Export")); try { os = new FileOutputStream(fileName); bw = new BufferedWriter(new OutputStreamWriter(os)); Modified: trunk/Jmol/src/org/jmol/shape/Text.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Text.java 2008-09-11 19:10:04 UTC (rev 9868) +++ trunk/Jmol/src/org/jmol/shape/Text.java 2008-09-11 19:10:37 UTC (rev 9869) @@ -293,7 +293,7 @@ boxXY[1] = (is3dEcho ? y : (windowHeight - y)) + offsetY * scale; } - System.out.print("boxXY[1]=" + boxXY[1]); + //System.out.print("boxXY[1]=" + boxXY[1]); if (align == ALIGN_CENTER) boxXY[1] -= (image != null ? boxHeight : xyz != null ? boxHeight : ascent - boxHeight) / 2; @@ -302,9 +302,9 @@ else if (xyz != null) boxXY[1] -= ascent / 2; - System.out.println(" movableY = " + movableY + " offsetY = " + offsetY - + " boxXY[1]=" + boxXY[1] + " boxHeight=" + boxHeight + " ascent=" - + ascent + " " + text); + //System.out.println(" movableY = " + movableY + " offsetY = " + offsetY + // + " boxXY[1]=" + boxXY[1] + " boxHeight=" + boxHeight + " ascent=" + //+ ascent + " " + text); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-15 03:55:34
|
Revision: 9893 http://jmol.svn.sourceforge.net/jmol/?rev=9893&view=rev Author: hansonr Date: 2008-09-15 03:55:18 +0000 (Mon, 15 Sep 2008) Log Message: ----------- 11.6.RC15 VERSION # new feature: load menu items for signed applet # new feature: save menu items for signed applet # bug fix: applet -- setting a jmolScript callback prevents menu updates # new feature: minimize menu item # new feature: signed applet allows "load ?" and includes previewer # bug fix: H-M spacegroup designations specifying nonstandard Hall symbols by default # new feature: signed applet/application load ?xxx uses load dialog # webexport help updated to reflect ability to handle files opened with "load append" Modified Paths: -------------- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java trunk/Jmol/src/org/jmol/viewer/FileManager.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/export/dialog/Dialog.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-14 23:54:12 UTC (rev 9892) +++ trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-15 03:55:18 UTC (rev 9893) @@ -47,6 +47,7 @@ import org.jmol.api.JmolViewer; import org.jmol.i18n.GT; import org.jmol.util.Escape; +import org.jmol.util.TextFormat; import org.jmol.viewer.FileManager; public class Dialog extends JPanel implements JmolDialogInterface { @@ -87,11 +88,20 @@ openChooser.setDialogSize(historyFile.getWindowSize(windowName)); openChooser.setDialogLocation(historyFile.getWindowPosition(windowName)); } + - if (fileName != null && fileName.length() > 0) - openChooser.setSelectedFile(new File(fileName)); - if (fileName != null && fileName.indexOf(":") < 0) - openChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); + if (fileName != null) { + int pt = fileName.lastIndexOf("."); + String sType = fileName.substring(pt + 1); + if (pt >= 0 && sType.length() > 0) + openChooser.addChoosableFileFilter(new TypeFilter(sType)); + if (fileName.indexOf(".") == 0) + fileName = "Jmol" + fileName; + if (fileName.length() > 0) + openChooser.setSelectedFile(new File(fileName)); + if ( fileName.indexOf(":") < 0) + openChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); + } File file = null; if (openChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) file = openChooser.getSelectedFile(); @@ -101,7 +111,7 @@ if (historyFile != null) historyFile.addWindowInfo(windowName, openChooser.getDialog(), null); - String url = FileManager.getLocalUrl(file.getAbsolutePath()); + String url = getLocalUrl(file); if (url != null) { fileName = url; } else { @@ -113,6 +123,33 @@ return (doAppend ? "load append " + Escape.escape(fileName) : fileName); } + private final static String[] urlPrefixes = { + "http:", "http://", + "www.", "http://www.", + "https:", "https://", + "ftp:", "ftp://", + "file:", "file:///"}; + + private static String getLocalUrl(File file) { + // entering a url on a file input box will be accepted, + // but cause an error later. We can fix that... + // return null if there is no problem, the real url if there is + if (file.getName().startsWith("=")) + return file.getName(); + String path = file.getAbsolutePath().replace('\\', '/'); + for (int i = 0; i < urlPrefixes.length; i++) + if (path.indexOf(urlPrefixes[i]) == 0) + return null; + for (int i = 0; i < urlPrefixes.length; i += 2) + if (path.indexOf(urlPrefixes[i]) > 0) + return urlPrefixes[i + 1] + + TextFormat.trim(path.substring( + path.indexOf(urlPrefixes[i]) + urlPrefixes[i].length()) + , "/"); + return null; + } + + public String getSaveFileNameFromDialog(JmolViewer viewer, String fileName, String type) { if (saveChooser == null) Modified: trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-14 23:54:12 UTC (rev 9892) +++ trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-15 03:55:18 UTC (rev 9893) @@ -125,6 +125,7 @@ */ void updatePreview(File file) { if (file != null) { + //doesn't update from use input? display.getViewer().evalStringQuiet("load \"" + file.getAbsolutePath() + "\""); display.repaint(); } else { Modified: trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java 2008-09-14 23:54:12 UTC (rev 9892) +++ trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java 2008-09-15 03:55:18 UTC (rev 9893) @@ -75,10 +75,10 @@ { "@AXESCOLOR", "gray salmon maroon olive slateblue gold orchid"}, { "popupMenu", - "modelSetMenu FRAMESbyModelComputedMenu configurationComputedMenu - selectMenuText viewMenu renderMenu colorMenu - surfaceMenu SYMMETRYUNITCELLMenu - " + "modelSetMenu SIGNEDloadMenu SIGNEDwriteMenu FRAMESbyModelComputedMenu configurationComputedMenu - selectMenuText viewMenu renderMenu colorMenu - surfaceMenu SYMMETRYUNITCELLMenu - " + "zoomMenu spinMenu VIBRATIONMenu " + "FRAMESanimateMenu - " - + "measureMenu pickingMenu - JVM12showConsole JVM12showMenu SIGNEDwriteMenu - " + + "measureMenu pickingMenu - JVM12showConsole JVM12showMenu - " + "languageComputedMenu aboutComputedMenu" }, { "selectMenuText", @@ -212,8 +212,11 @@ + "showSpacegroup showState SYMMETRYshowSymmetry UNITCELLshow - showIsosurface showMo - extractMOL" }, + { "SIGNEDloadMenu", + "loadPdb loadFileOrURL loadFileUnitCell - loadScript" }, + { "SIGNEDwriteMenu", - "writeFileTextVARIABLE writeState writeHistory writeIsosurface - writeJpg writePng - writePovray writeVrml writeMaya" }, + "writeFileTextVARIABLE writeState writeHistory - writeJpg writePng writePovray - writeIsosurface writeVrml writeMaya" }, { "[set_spin_X]Menu", "s0 s5 s10 s20 s30 s40 s50" }, @@ -476,6 +479,12 @@ { "showOrient", "console on;show orientation" }, { "showSpacegroup", "console on;show spacegroup" }, { "showState", "console on;show state" }, + + { "loadPdb", "load ?=1crn" }, + { "loadFileOrURL", "load ?" }, + { "loadFileUnitCell", "load ? {1 1 1}" }, + { "loadScript", "script ?.spt" }, + { "writeFileTextVARIABLE", "write file \"?FILE?\"" }, { "writeState", "write state \"?FILEROOT?.spt\"" }, { "writeHistory", "write history \"?FILEROOT?.his\"" }, @@ -860,16 +869,22 @@ "SYMMETRYshowSymmetry", GT._("Symmetry"), "showState", GT._("Current state"), - "SIGNEDwriteMenu", GT._("Write"), + "SIGNEDloadMenu", GT._("Load"), + "loadPdb", GT._("Load PDB"), + "loadFileOrURL", GT._("Load file or URL"), + "loadFileUnitCell", GT._("Load full unit cell"), + "loadScript", GT._("Script"), + + "SIGNEDwriteMenu", GT._("Save"), "writeFileTextVARIABLE", GT._("File {0}"), - "writeState", GT._("State"), - "writeHistory", GT._("History"), - "writeIsosurface", GT._("Isosurface"), - "writeJpg", GT._("Image - JPG"), - "writePng", GT._("Image - PNG"), - "writePovray", "POV-Ray", - "writeVrml", GT._("VRML"), - "writeMaya", GT._("Maya"), + "writeState", GT._("SPT State"), + "writeHistory", GT._("SPT History"), + "writeJpg", GT._("{0} Image", "JPG"), + "writePng", GT._("{0} Image", "PNG"), + "writePovray", GT._("{0} Image", "POV-Ray"), + "writeIsosurface", GT._("JVXL Isosurface"), + "writeVrml", GT._("{0} 3D Model", "VRML"), + "writeMaya", GT._("{0} 3D Model", "Maya"), "UNITCELLshow", GT._("Unit cell"), Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-14 23:54:12 UTC (rev 9892) +++ trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-15 03:55:18 UTC (rev 9893) @@ -515,18 +515,6 @@ return -1; } - public static String getLocalUrl(String path) { - // entering a url on a file input box will be accepted, - // but cause an error later. We can fix that... - // return null if there is no problem, the real url if there is - if (urlTypeIndex(path) < 0) - for (int i = 0; i < urlPrefixes.length; ++i) - if (path.indexOf(urlPrefixes[i]) >= 0) - return TextFormat.simpleReplace(path.substring(path.indexOf(urlPrefixes[i])) - .replace('\\', '/'), ":", ":/"); - return null; - } - private void setNames(String[] names) { if (names == null) return; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-14 23:54:12 UTC (rev 9892) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-15 03:55:18 UTC (rev 9893) @@ -1,16 +1,18 @@ # Developers: to add a description of changes you have made, # add it on a line starting with # below the "version=..." line -version=11.6.RC15_dev +version=11.6.RC15 +# new feature: load menu items for signed applet +# new feature: save menu items for signed applet # bug fix: applet -- setting a jmolScript callback prevents menu updates -# new feature: write menu items for signed applet # new feature: minimize menu item # new feature: signed applet allows "load ?" and includes previewer # bug fix: H-M spacegroup designations specifying nonstandard Hall symbols by default # new feature: signed applet/application load ?xxx uses load dialog # webexport help updated to reflect ability to handle files opened with "load append" + # ----------------------------------------------------------------------------- #version=11.6.RC14 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-15 10:59:30
|
Revision: 9895 http://jmol.svn.sourceforge.net/jmol/?rev=9895&view=rev Author: hansonr Date: 2008-09-15 10:59:26 +0000 (Mon, 15 Sep 2008) Log Message: ----------- threads Modified Paths: -------------- trunk/Jmol/src/org/jmol/applet/Jmol.java trunk/Jmol/src/org/jmol/applet/Jvm12.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/applet/Jmol.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-09-15 05:51:23 UTC (rev 9894) +++ trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-09-15 10:59:26 UTC (rev 9895) @@ -1239,7 +1239,7 @@ public String dialogAsk(String type, String data) { if (!isSigned || jvm12 == null) return null; - return jvm12.dialogAsk(null, type, data); + return jvm12.dialogAsk(type, data); } } Modified: trunk/Jmol/src/org/jmol/applet/Jvm12.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-15 05:51:23 UTC (rev 9894) +++ trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-15 10:59:26 UTC (rev 9895) @@ -24,13 +24,16 @@ package org.jmol.applet; import java.awt.*; +import java.lang.reflect.InvocationTargetException; +import javax.swing.SwingUtilities; + import org.jmol.api.*; import org.jmol.util.Logger; class Jvm12 { - private JmolViewer viewer; + protected JmolViewer viewer; JmolAdapter modelAdapter; private Component awtComponent; Console console; @@ -94,8 +97,8 @@ return console.getText(); } - final private static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM" }; - final private static String[] imageExtensions = { "jpg", "png", "gif", "PPM" }; + final protected static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM" }; + final protected static String[] imageExtensions = { "jpg", "png", "gif", "PPM" }; static JmolDialogInterface newDialog(boolean forceNewTranslation) { JmolDialogInterface sd = (JmolDialogInterface) Interface @@ -104,56 +107,74 @@ return sd; } - public String dialogAsk(JmolDialogInterface sd, String type, - String fileName) { - if (type.equals("load")) - return getOpenFileNameFromDialog(fileName); - if (sd == null) - sd = newDialog(false); - if (type.equals("save")) { - return sd.getSaveFileNameFromDialog(viewer, fileName, null); + String inputFileName; + String outputFileName; + String dialogType; + + public String dialogAsk(String type, String fileName) { + inputFileName = fileName; + dialogType = type; + System.out.println(Thread.currentThread().getName()); + try { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + if (dialogType.equals("load")) { + outputFileName = newDialog(false).getOpenFileNameFromDialog( + modelAdapter, viewer, inputFileName, null, null, false); + return; + } + JmolDialogInterface sd = newDialog(false); + if (dialogType.equals("save")) { + outputFileName = sd.getSaveFileNameFromDialog(viewer, + inputFileName, null); + return; + } + if (dialogType.startsWith("saveImage")) { + outputFileName = sd.getImageFileNameFromDialog(viewer, + inputFileName, imageType, imageChoices, imageExtensions, + qualityJPG, qualityPNG); + qualityJPG = sd.getQuality("JPG"); + qualityPNG = sd.getQuality("PNG"); + String sType = sd.getType(); + if (sType != null) + imageType = sType; + int iQuality = sd.getQuality(sType); + if (iQuality > 0) + imageQuality = iQuality; + return; + } + outputFileName = null; + } + }); + } catch (InterruptedException e) { + System.out.println(e.getMessage()); + } catch (InvocationTargetException e) { + System.out.println(e.getMessage()); } - if (type.startsWith("saveImage")) { - return sd.getImageFileNameFromDialog(viewer, fileName, - imageType, imageChoices, imageExtensions, qualityJPG, qualityPNG); - } - return null; + return outputFileName; } - public String getOpenFileNameFromDialog(String fileName) { - return newDialog(false).getOpenFileNameFromDialog(modelAdapter, viewer, fileName, null, null, false); - } - int qualityJPG = -1; int qualityPNG = -1; String imageType; + int imageQuality; String createImage(String fileName, String type, Object text_or_bytes, int quality) { - String sType = null; - int iQuality = quality; if (quality == Integer.MIN_VALUE) { // text or bytes - fileName = dialogAsk(null, "save", fileName); + fileName = dialogAsk("save", fileName); } else { - // image - JmolDialogInterface sd = newDialog(false); - fileName = dialogAsk(sd, "saveImage+" + type, fileName); - qualityJPG = sd.getQuality("JPG"); - qualityPNG = sd.getQuality("PNG"); - sType = imageType = sd.getType(); - if (sType == null) - sType = type.toUpperCase(); - iQuality = sd.getQuality(sType); - if (iQuality < 0) - iQuality = quality; + imageType = type.toUpperCase(); + imageQuality = quality; + fileName = dialogAsk("saveImage+" + type, fileName); } if (fileName == null) return null; JmolImageCreatorInterface c = (JmolImageCreatorInterface) Interface .getOptionInterface("export.image.ImageCreator"); c.setViewer(viewer); - return c.createImage(fileName, sType, text_or_bytes, iQuality); + return c.createImage(fileName, imageType, text_or_bytes, imageQuality); } void clipImage() { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-15 05:51:23 UTC (rev 9894) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-15 10:59:26 UTC (rev 9895) @@ -1,7 +1,7 @@ # Developers: to add a description of changes you have made, # add it on a line starting with # below the "version=..." line -version=11.6.RC15 +version=11.6.RC15_b # new feature: load menu items for signed applet # new feature: save menu items for signed applet This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-15 12:00:48
|
Revision: 9897 http://jmol.svn.sourceforge.net/jmol/?rev=9897&view=rev Author: hansonr Date: 2008-09-15 12:00:35 +0000 (Mon, 15 Sep 2008) Log Message: ----------- threading, debug comments Modified Paths: -------------- trunk/Jmol/src/org/jmol/applet/Jmol.java trunk/Jmol/src/org/jmol/applet/Jvm12.java trunk/Jmol/src/org/jmol/export/dialog/Dialog.java trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/symmetry/SymmetryOperation.java trunk/Jmol/src/org/jmol/symmetry/UnitCell.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/applet/Jmol.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-09-15 11:16:04 UTC (rev 9896) +++ trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-09-15 12:00:35 UTC (rev 9897) @@ -244,7 +244,7 @@ // viewer = new JmolViewer(this, new CdkJmolAdapter(null)); viewer = JmolViewer.allocateViewer(appletWrapper, modelAdapter = new SmarterJmolAdapter()); - String options = ""; + String options = "-applet"; isSigned = getBooleanValue("signed", false) || appletWrapper.isSigned(); if (isSigned) options += "-signed"; Modified: trunk/Jmol/src/org/jmol/applet/Jvm12.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-15 11:16:04 UTC (rev 9896) +++ trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-15 12:00:35 UTC (rev 9897) @@ -116,7 +116,7 @@ public String dialogAsk(String type, String fileName) { inputFileName = fileName; dialogType = type; - System.out.println(Thread.currentThread().getName()); + System.out.println("Jvm12 thread: " + Thread.currentThread().getName()); try { SwingUtilities.invokeAndWait(new Runnable() { public void run() { Modified: trunk/Jmol/src/org/jmol/export/dialog/Dialog.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-15 11:16:04 UTC (rev 9896) +++ trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-15 12:00:35 UTC (rev 9897) @@ -130,7 +130,7 @@ "http://www.", "https:", "https://", "ftp:", "ftp://", "file:", "file:///" }; - private static String getLocalUrl(File file) { + static String getLocalUrl(File file) { // entering a url on a file input box will be accepted, // but cause an error later. We can fix that... // return null if there is no problem, the real url if there is Modified: trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-15 11:16:04 UTC (rev 9896) +++ trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-15 12:00:35 UTC (rev 9897) @@ -126,9 +126,13 @@ */ void updatePreview(File file) { if (file != null) { + String fileName = file.getAbsolutePath(); + String url = Dialog.getLocalUrl(file); + if (url != null) + fileName = url; //doesn't update from use input? display.getViewer().evalStringQuiet( - "load \"" + file.getAbsolutePath() + "\""); + "zap;set echo top left;echo loading...;refresh;load \"" + fileName + "\""); display.repaint(); } else { display.getViewer().evalStringQuiet("zap"); Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-15 11:16:04 UTC (rev 9896) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-15 12:00:35 UTC (rev 9897) @@ -1350,10 +1350,10 @@ atoms[i].add(center); } else { ptTemp.add(atoms[i]); - System.out.println((Point3f)atoms[i]); + //System.out.println((Point3f)atoms[i]); matTemp.transform(atoms[i]); ptTemp.sub(atoms[i]); - System.out.println((Point3f)atoms[i]); + //System.out.println((Point3f)atoms[i]); } taint(i, TAINT_COORD); n++; Modified: trunk/Jmol/src/org/jmol/symmetry/SymmetryOperation.java =================================================================== --- trunk/Jmol/src/org/jmol/symmetry/SymmetryOperation.java 2008-09-15 11:16:04 UTC (rev 9896) +++ trunk/Jmol/src/org/jmol/symmetry/SymmetryOperation.java 2008-09-15 12:00:35 UTC (rev 9897) @@ -164,9 +164,9 @@ if (i % 4 == 3) v = normalizeTwelfths((v < 0 ? -1 : 1) * (int)(Math.abs(v) * 12.001f)); temp[i] = v; - System.out.print(v + " "); + //System.out.print(v + " "); } - System.out.println(); + //System.out.println(); return true; } Modified: trunk/Jmol/src/org/jmol/symmetry/UnitCell.java =================================================================== --- trunk/Jmol/src/org/jmol/symmetry/UnitCell.java 2008-09-15 11:16:04 UTC (rev 9896) +++ trunk/Jmol/src/org/jmol/symmetry/UnitCell.java 2008-09-15 12:00:35 UTC (rev 9897) @@ -280,7 +280,7 @@ : 1 ); // types 6 and 7 not supported - System.out.println("ortep type " + ortepType + " isFractional=" + isFractional + " D = " + dd + " C=" + cc); + //System.out.println("ortep type " + ortepType + " isFractional=" + isFractional + " D = " + dd + " C=" + cc); double B11 = parBorU[0] * dd * (isFractional ? a_ * a_ : 1); double B22 = parBorU[1] * dd * (isFractional ? b_ * b_ : 1); double B33 = parBorU[2] * dd * (isFractional ? c_ * c_ : 1); @@ -307,7 +307,7 @@ * c * cB_ * B13; Bcart[5] = 2 * c * c * cA_ * cB_ * B33 + b * c * cB_ * sinGamma * B23; - System.out.println("UnitCell Bcart="+Bcart[0] + " " + Bcart[1] + " " + Bcart[2] + " " + Bcart[3] + " " + Bcart[4] + " " + Bcart[5]); + //System.out.println("UnitCell Bcart="+Bcart[0] + " " + Bcart[1] + " " + Bcart[2] + " " + Bcart[3] + " " + Bcart[4] + " " + Bcart[5]); Vector3f unitVectors[] = new Vector3f[3]; for (int i = 0; i < 3; i++) unitVectors[i] = new Vector3f(); Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-15 11:16:04 UTC (rev 9896) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-15 12:00:35 UTC (rev 9897) @@ -273,9 +273,9 @@ htmlName = (i < 0 ? fullName : fullName.substring(0, i)); syncId = (i < 0 ? "" : fullName .substring(i + 1, fullName.length() - 1)); - isApplet = (documentBase != null); String str = "" + commandOptions; + isApplet = (commandOptions.indexOf("-applet") >= 0); if (isApplet) { Logger.info("applet context: " + commandOptions); String appletProxy = null; @@ -293,7 +293,6 @@ scriptManager.startCommandWatcher(true); } else { // not an applet -- used to pass along command line options - isPreviewOnly = (str.indexOf("#previewOnly") >= 0); g3d.setBackgroundTransparent(str.indexOf("-b") >= 0); isSilent = (str.indexOf("-i") >= 0); if (isSilent) @@ -314,6 +313,7 @@ } mustRender = (haveDisplay || writeInfo != null); } + isPreviewOnly = (str.indexOf("#previewOnly") >= 0); setBooleanProperty("_applet", isApplet); setBooleanProperty("_signedApplet", isSignedApplet); setBooleanProperty("_useCommandThread", useCommandThread); @@ -1989,7 +1989,7 @@ repaintManager.initializePointers(1); setCurrentModelIndex(0); setBackgroundModelIndex(-1); - setFrankOn(!isPreviewOnly && getShowFrank()); + setFrankOn(getShowFrank()); mouseManager.startHoverWatcher(!isPreviewOnly); setTainted(true); finalizeTransformParameters(); @@ -3420,7 +3420,7 @@ /// direct no-queue use: public String scriptWait(String strScript) { - System.out.println("Viewer scriptWait1 " + htmlName + " " + strScript + " "); + //System.out.println("Viewer scriptWait1 " + htmlName + " " + strScript + " "); scriptManager.waitForQueue(); boolean doTranslateTemp = GT.getDoTranslate(); GT.setDoTranslate(false); @@ -3432,7 +3432,7 @@ } public Object scriptWaitStatus(String strScript, String statusList) { - System.out.println("Viewer scriptWait2 " + htmlName + " " + strScript); + //System.out.println("Viewer scriptWait2 " + htmlName + " " + strScript); scriptManager.waitForQueue(); boolean doTranslateTemp = GT.getDoTranslate(); GT.setDoTranslate(false); @@ -3444,7 +3444,7 @@ public Object evalStringWaitStatus(String returnType, String strScript, String statusList) { - System.out.println("Viewer scriptWait3 " + htmlName + " " + strScript); + //System.out.println("Viewer scriptWait3 " + htmlName + " " + strScript); scriptManager.waitForQueue(); return evalStringWaitStatus(returnType, strScript, statusList, false, false, false); @@ -5568,12 +5568,16 @@ boolean frankOn = true; public void setFrankOn(boolean TF) { - frankOn = TF && !isPreviewOnly; + if (isPreviewOnly) + TF = false; + frankOn = TF; setObjectMad(JmolConstants.SHAPE_FRANK, "frank", (short) (TF ? 1 : 0)); } public boolean getShowFrank() { - return (!isApplet || !creatingImage) && (isSignedApplet || getObjectMad(StateManager.OBJ_FRANK) != 0); + if (isPreviewOnly || isApplet && creatingImage) + return false; + return (isSignedApplet || frankOn); } public boolean isSignedApplet() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-15 12:48:19
|
Revision: 9898 http://jmol.svn.sourceforge.net/jmol/?rev=9898&view=rev Author: hansonr Date: 2008-09-15 12:48:13 +0000 (Mon, 15 Sep 2008) Log Message: ----------- signed applet cancel dialog action Modified Paths: -------------- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java trunk/Jmol/src/org/jmol/viewer/FileManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/export/dialog/Dialog.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-15 12:00:35 UTC (rev 9897) +++ trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-15 12:48:13 UTC (rev 9898) @@ -108,8 +108,11 @@ File file = null; if (openChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) file = openChooser.getSelectedFile(); - if (file == null) + if (file == null) { + openChooser.setAccessory(null); + openPreview = null; return null; + } if (historyFile != null) historyFile.addWindowInfo(windowName, openChooser.getDialog(), null); @@ -122,6 +125,7 @@ fileName = file.getAbsolutePath(); } boolean doAppend = (openPreview != null && openPreview.isAppendSelected()); + openChooser.setAccessory(null); openPreview = null; return (doAppend ? "load append " + Escape.escape(fileName) : fileName); } Modified: trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-15 12:00:35 UTC (rev 9897) +++ trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-15 12:48:13 UTC (rev 9898) @@ -128,11 +128,14 @@ if (file != null) { String fileName = file.getAbsolutePath(); String url = Dialog.getLocalUrl(file); + System.out.println("updatePreview + " + fileName + " " + url); if (url != null) fileName = url; //doesn't update from use input? display.getViewer().evalStringQuiet( - "zap;set echo top left;echo loading...;refresh;load \"" + fileName + "\""); + "zap;set echo top left;echo loading...;refresh;" + + (fileName.indexOf(".spt") >= 0 ? "script" : "load") + + " \"" + fileName + "\""); display.repaint(); } else { display.getViewer().evalStringQuiet("zap"); Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-15 12:00:35 UTC (rev 9897) +++ trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-15 12:48:13 UTC (rev 9898) @@ -526,8 +526,10 @@ if (name == null) return null; if (name.startsWith("?") - && (name = viewer.dialogAsk("load", name.substring(1))) == null) + && (name = viewer.dialogAsk("load", name.substring(1))) == null) { + openErrorMessage = "#CANCELED#"; return null; + } File file = null; URL url = null; String[] names = null; Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-15 12:00:35 UTC (rev 9897) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-15 12:48:13 UTC (rev 9898) @@ -1543,7 +1543,7 @@ // openStringsInline(fileManager.getInlineDataArray(), htParams, false); return; } - if (!isAppend) + if (!isAppend && name.charAt(0) != '?') zap(false, false); Logger.startTimer(); fileManager.openFile(name, htParams, loadScript, isAppend); @@ -1744,7 +1744,7 @@ if (clientFile instanceof String || clientFile == null) { String errorMsg = (String) clientFile; setStatusFileNotLoaded(fullPathName, errorMsg); - if (errorMsg != null && !isAppend) + if (errorMsg != null && !isAppend && !errorMsg.equals("#CANCELED#")) zap(errorMsg); return errorMsg; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-15 21:39:52
|
Revision: 9902 http://jmol.svn.sourceforge.net/jmol/?rev=9902&view=rev Author: hansonr Date: 2008-09-16 04:39:49 +0000 (Tue, 16 Sep 2008) Log Message: ----------- 11.6.RC15 VERSION Mac and PC signed applet load/save working # code: thread control for Java Swing in applet context # thread creating Swing objects MUST be event thread # -- using SwingUtilities.invokeAndWait() from the commandWatcher thread # new feature: load menu items for signed applet # new feature: save menu items for signed applet # bug fix: applet -- setting a jmolScript callback prevents menu updates # new feature: minimize menu item # new feature: signed applet allows "load ?" and includes previewer # bug fix: H-M spacegroup designations specifying nonstandard Hall symbols by default Modified Paths: -------------- trunk/Jmol/src/org/jmol/applet/Jvm12.java trunk/Jmol/src/org/jmol/export/dialog/Dialog.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/applet/Jvm12.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-15 20:03:32 UTC (rev 9901) +++ trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-16 04:39:49 UTC (rev 9902) @@ -100,7 +100,7 @@ } final protected static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM" }; - final protected static String[] imageExtensions = { "jpg", "png", "gif", "PPM" }; + final protected static String[] imageExtensions = { "jpg", "png", "gif", "ppm" }; static JmolDialogInterface newDialog(boolean forceNewTranslation) { JmolDialogInterface sd = (JmolDialogInterface) Interface @@ -141,7 +141,7 @@ if (sType != null) imageType = sType; int iQuality = sd.getQuality(sType); - if (iQuality > 0) + if (iQuality >= 0) imageQuality = iQuality; return; } Modified: trunk/Jmol/src/org/jmol/export/dialog/Dialog.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-15 20:03:32 UTC (rev 9901) +++ trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-16 04:39:49 UTC (rev 9902) @@ -55,12 +55,18 @@ String[] extensions = new String[10]; String choice; String extension; - private int defaultChoice; + + // static so that they can be shared among instances + + static private int defaultChoice; + static int qualityJPG = 75; + static int qualityPNG = 2; + private JSlider qSliderJPEG, qSliderPNG; private JComboBox cb; JPanel qPanelJPEG, qPanelPNG; - static JFileChooser exportChooser; + static JFileChooser imageChooser; static JFileChooser saveChooser; public Dialog() { @@ -177,70 +183,76 @@ return file.getAbsolutePath(); } + public String getImageFileNameFromDialog(JmolViewer viewer, String fileName, String type, String[] imageChoices, String[] imageExtensions, - int qualityJPG, int qualityPNG) { - if (exportChooser == null) - exportChooser = new JFileChooser(); - exportChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); - exportChooser.resetChoosableFileFilters(); + int qualityJPG0, int qualityPNG0) { + if (qualityJPG0 < 0 || qualityJPG0 > 100) + qualityJPG0 = qualityJPG; + if (qualityPNG0 < 0) + qualityPNG0 = qualityPNG; + if (qualityPNG0 > 9) + qualityPNG0 = 2; + qualityJPG = qualityJPG0; + qualityPNG = qualityPNG0; + + if (imageChooser == null) + imageChooser = new JFileChooser(); + imageChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); + imageChooser.resetChoosableFileFilters(); File file = null; if (fileName == null) { fileName = viewer.getModelSetFileName(); - String pathName = exportChooser.getCurrentDirectory().getPath(); - createPanel(exportChooser, imageChoices, imageExtensions, type, - qualityJPG, qualityPNG); + String pathName = imageChooser.getCurrentDirectory().getPath(); if (fileName != null && pathName != null) { int extensionStart = fileName.lastIndexOf('.'); if (extensionStart != -1) { fileName = fileName.substring(0, extensionStart) + "." - + getExtension(); + + extension; } file = new File(pathName, fileName); } } else { if (fileName.indexOf(".") == 0) fileName = "Jmol" + fileName; - String sType = fileName.substring(fileName.lastIndexOf(".") + 1); + file = new File(fileName); + type = fileName.substring(fileName.lastIndexOf(".") + 1); for (int i = 0; i < imageExtensions.length; i++) - if (sType.equals(imageChoices[i]) - || sType.toLowerCase().equals(imageExtensions[i])) { - sType = imageChoices[i]; + if (type.equals(imageChoices[i]) + || type.toLowerCase().equals(imageExtensions[i])) { + type = imageChoices[i]; break; } - createPanel(exportChooser, imageChoices, imageExtensions, sType, - qualityJPG, qualityPNG); - file = new File(fileName); } - exportChooser.setSelectedFile(initialFile = file); - if ((file = showSaveDialog(this, this, exportChooser, file)) == null) + createExportPanel(imageChoices, imageExtensions, type); + imageChooser.setSelectedFile(initialFile = file); + if ((file = showSaveDialog(this, this, imageChooser, file)) == null) return null; + qualityJPG = qSliderJPEG.getValue(); + qualityPNG = qSliderPNG.getValue(); + if (cb.getSelectedIndex() >= 0) + defaultChoice = cb.getSelectedIndex(); viewer.setStringProperty("currentLocalPath", file.getParent()); return file.getAbsolutePath(); } File initialFile; - /* (non-Javadoc) - * @see org.jmol.export.JmolImageTyperInterface#createPanel(javax.swing.JFileChooser, java.lang.String[], java.lang.String[], int) - */ - public void createPanel(JFileChooser fc, String[] choices, - String[] extensions, String type, int qualityJPEG, - int qualityPNG) { - exportChooser = fc; - fc.setAccessory(this); + private void createExportPanel(String[] choices, + String[] extensions, String type) { + imageChooser.setAccessory(this); setLayout(new BorderLayout()); - choice = null; if (type.equals("JPG")) type = "JPEG"; for (defaultChoice = choices.length; --defaultChoice >= 1;) if (choices[defaultChoice].equals(type)) break; extension = extensions[defaultChoice]; + choice = choices[defaultChoice]; this.extensions = extensions; - exportChooser.resetChoosableFileFilters(); - exportChooser.addChoosableFileFilter(new TypeFilter(extension)); + imageChooser.resetChoosableFileFilters(); + imageChooser.addChoosableFileFilter(new TypeFilter(extension)); JPanel cbPanel = new JPanel(); cbPanel.setLayout(new FlowLayout()); cbPanel.setBorder(new TitledBorder(GT._("Image Type"))); @@ -250,24 +262,17 @@ } cbPanel.add(cb); cb.setSelectedIndex(defaultChoice); - cb.addItemListener(new ChoiceListener()); + cb.addItemListener(new ExportChoiceListener()); add(cbPanel, BorderLayout.NORTH); JPanel qPanel2 = new JPanel(); qPanel2.setLayout(new BorderLayout()); - if (qualityJPEG < 0) - qualityJPEG = 75; - if (qualityPNG < 0) - qualityPNG = 2; - if (qualityPNG > 9) - qualityPNG = 9; - qPanelJPEG = new JPanel(); qPanelJPEG.setLayout(new BorderLayout()); qPanelJPEG.setBorder(new TitledBorder(GT._("JPEG Quality ({0})", - qualityJPEG))); - qSliderJPEG = new JSlider(SwingConstants.HORIZONTAL, 50, 100, qualityJPEG); + qualityJPG))); + qSliderJPEG = new JSlider(SwingConstants.HORIZONTAL, 50, 100, qualityJPG); qSliderJPEG.putClientProperty("JSlider.isFilled", Boolean.TRUE); qSliderJPEG.setPaintTicks(true); qSliderJPEG.setMajorTickSpacing(10); @@ -279,7 +284,7 @@ qPanelPNG = new JPanel(); qPanelPNG.setLayout(new BorderLayout()); qPanelPNG - .setBorder(new TitledBorder(GT._("PNG Quality ({0})", qualityPNG))); + .setBorder(new TitledBorder(GT._("PNG Compression ({0})", qualityPNG))); qSliderPNG = new JSlider(SwingConstants.HORIZONTAL, 0, 9, qualityPNG); qSliderPNG.putClientProperty("JSlider.isFilled", Boolean.TRUE); qSliderPNG.setPaintTicks(true); @@ -304,50 +309,42 @@ public void stateChanged(ChangeEvent arg0) { int value = slider.getValue(); if (isJPEG) { + qualityJPG = value; qPanelJPEG .setBorder(new TitledBorder(GT._("JPEG Quality ({0})", value))); } else { + qualityPNG = value; qPanelPNG.setBorder(new TitledBorder(GT._("PNG Quality ({0})", value))); } } - } - public class ChoiceListener implements ItemListener { + public class ExportChoiceListener implements ItemListener { public void itemStateChanged(ItemEvent e) { JComboBox source = (JComboBox) e.getSource(); - choice = (String) source.getSelectedItem(); - String ext = extensions[source.getSelectedIndex()]; - File selectedFile = exportChooser.getSelectedFile(); + File selectedFile = imageChooser.getSelectedFile(); if (selectedFile == null) selectedFile = initialFile; File newFile = null; String name; + String newExt = extensions[source.getSelectedIndex()]; if ((name = selectedFile.getName()) != null && name.endsWith("." + extension)) { name = name.substring(0, name.length() - extension.length()); - name += ext; - newFile = new File(selectedFile.getPath(), name); + name += newExt; + initialFile = newFile = new File(selectedFile.getParent(), name); } - exportChooser.resetChoosableFileFilters(); - exportChooser.addChoosableFileFilter(new TypeFilter(ext)); + extension = newExt; + imageChooser.resetChoosableFileFilters(); + imageChooser.addChoosableFileFilter(new TypeFilter(extension)); if (newFile != null) - exportChooser.setSelectedFile(newFile); - extension = extensions[source.getSelectedIndex()]; + imageChooser.setSelectedFile(newFile); + choice = (String) source.getSelectedItem(); } } /* (non-Javadoc) - * @see org.jmol.export.JmolImageTyperInterface#memorizeDefaultType() - */ - public void memorizeDefaultType() { - if ((cb != null) && (cb.getSelectedIndex() >= 0)) { - defaultChoice = cb.getSelectedIndex(); - } - } - - /* (non-Javadoc) * @see org.jmol.export.JmolImageTyperInterface#getType() */ public String getType() { @@ -355,18 +352,11 @@ } /* (non-Javadoc) - * @see org.jmol.export.JmolImageTyperInterface#getExtension() - */ - public String getExtension() { - return extension; - } - - /* (non-Javadoc) * @see org.jmol.export.JmolImageTyperInterface#getQuality(java.lang.String) */ public int getQuality(String sType) { - return (sType.equals("JPEG") || sType.equals("JPG") ? qSliderJPEG - .getValue() : sType.equals("PNG") ? qSliderPNG.getValue() : -1); + return (sType.equals("JPEG") || sType.equals("JPG") ? qualityJPG : sType + .equals("PNG") ? qualityPNG : -1); } private static boolean doOverWrite(JFileChooser chooser, File file) { @@ -378,13 +368,13 @@ return (opt == 0); } - private static File showSaveDialog(Dialog it, Component c, + private File showSaveDialog(Dialog sd, Component c, JFileChooser chooser, File file) { while (true) { if (chooser.showSaveDialog(c) != JFileChooser.APPROVE_OPTION) return null; - if (it != null) - it.memorizeDefaultType(); + if (cb != null && cb.getSelectedIndex() >= 0) + defaultChoice = cb.getSelectedIndex(); if ((file = chooser.getSelectedFile()) == null || !file.exists() || doOverWrite(chooser, file)) return file; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-15 20:03:32 UTC (rev 9901) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-16 04:39:49 UTC (rev 9902) @@ -1,8 +1,11 @@ # Developers: to add a description of changes you have made, # add it on a line starting with # below the "version=..." line -version=11.6.RC15_dev +version=11.6.RC15 +# code: thread control for Java Swing in applet context +# thread creating Swing objects MUST be event thread +# -- using SwingUtilities.invokeAndWait() from the commandWatcher thread # new feature: load menu items for signed applet # new feature: save menu items for signed applet # bug fix: applet -- setting a jmolScript callback prevents menu updates Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-15 20:03:32 UTC (rev 9901) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-16 04:39:49 UTC (rev 9902) @@ -3191,6 +3191,9 @@ } public void renderScreenImage(Graphics g, Dimension size, Rectangle clip) { + // from paint/update event + if (creatingImage) + return; if (isTainted || getSlabEnabled()) setModelVisibility(); isTainted = false; @@ -6346,6 +6349,7 @@ public String createImage(String file, String type, Object text_or_bytes, int quality, int width, int height) { + //pushHoldRepaint(); int saveWidth = dimScreen.width; int saveHeight = dimScreen.height; if (quality != Integer.MIN_VALUE) { @@ -6363,6 +6367,7 @@ if (quality != Integer.MIN_VALUE) { resizeImage(saveWidth, saveHeight, true, false, true); } + //popHoldRepaint(); return err; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-16 05:22:47
|
Revision: 9904 http://jmol.svn.sourceforge.net/jmol/?rev=9904&view=rev Author: hansonr Date: 2008-09-16 12:22:42 +0000 (Tue, 16 Sep 2008) Log Message: ----------- 11.6.RC15_devb still working on file open dialogs Modified Paths: -------------- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java trunk/Jmol/src/org/jmol/viewer/FileManager.java trunk/Jmol/src/org/jmol/viewer/MouseManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/export/dialog/Dialog.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-16 11:08:21 UTC (rev 9903) +++ trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-16 12:22:42 UTC (rev 9904) @@ -83,13 +83,13 @@ HistoryFile historyFile = (HistoryFile) historyFileObject; - if (openChooser == null) { + if (openChooser == null) openChooser = new FileChooser(); - String previewProperty = System.getProperty("openFilePreview", "true"); - if (Boolean.valueOf(previewProperty).booleanValue()) { - openPreview = new FilePreview(openChooser, modelAdapter, allowAppend, - appletContext); - } + if (openPreview == null + && (viewer.isApplet() || Boolean.valueOf( + System.getProperty("openFilePreview", "true")).booleanValue())) { + openPreview = new FilePreview(openChooser, modelAdapter, allowAppend, + appletContext); } if (historyFile != null) { @@ -114,12 +114,8 @@ File file = null; if (openChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) file = openChooser.getSelectedFile(); - if (file == null) { - openChooser.setAccessory(null); - openPreview = null; - return null; - } - + if (file == null) + return closePreview(); if (historyFile != null) historyFile.addWindowInfo(windowName, openChooser.getDialog(), null); @@ -131,11 +127,16 @@ fileName = file.getAbsolutePath(); } boolean doAppend = (openPreview != null && openPreview.isAppendSelected()); - openChooser.setAccessory(null); - openPreview = null; + closePreview(); return (doAppend ? "load append " + Escape.escape(fileName) : fileName); } + String closePreview() { + if (openPreview != null) + openPreview.updatePreview(null); + return null; + } + private final static String[] urlPrefixes = { "http:", "http://", "www.", "http://www.", "https:", "https://", "ftp:", "ftp://", "file:", "file:///" }; Modified: trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-16 11:08:21 UTC (rev 9903) +++ trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-16 12:22:42 UTC (rev 9904) @@ -125,21 +125,25 @@ * @param file File selected */ void updatePreview(File file) { - if (file != null) { + String script; + if (file == null) { + script = "zap"; + } else { String fileName = file.getAbsolutePath(); String url = Dialog.getLocalUrl(file); System.out.println("updatePreview + " + fileName + " " + url); if (url != null) fileName = url; //doesn't update from use input? - display.getViewer().evalStringQuiet( - "zap;set echo top left;echo loading...;refresh;" - + (fileName.indexOf(".spt") >= 0 ? "script" : "load") - + " \"" + fileName + "\""); - display.repaint(); - } else { - display.getViewer().evalStringQuiet("zap"); + script = " \"" + fileName + "\""; + if (fileName.indexOf(".spt") >= 0) + script = "script " + script; + else + script = "zap;set echo top left;echo loading...;refresh; load " + script + + ";if({1}.size);cartoons only;color structure;endif"; } + display.getViewer().evalStringQuiet(script); + //display.repaint(); } private class JmolPanel extends JPanel { Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-16 11:08:21 UTC (rev 9903) +++ trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-16 12:22:42 UTC (rev 9904) @@ -537,13 +537,15 @@ name = TextFormat.formatString(viewer.getLoadFormat(), "FILE", name .substring(1)); String defaultDirectory = viewer.getDefaultDirectory(); - if (name.indexOf(":") < 0) + if (name.indexOf(":") < 0 && name.indexOf("/") != 0) name = addDirectory(defaultDirectory, name); if (appletDocumentBase != null) { // This code is only for the applet try { if (name.indexOf(":\\") == 1 || name.indexOf(":/") == 1) - name = "file:///" + name; + name = "file:/" + name; + else if (name.indexOf("/") == 0) + name = "file:" + name; url = new URL(appletDocumentBase, name); } catch (MalformedURLException e) { openErrorMessage = e.getMessage(); Modified: trunk/Jmol/src/org/jmol/viewer/MouseManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2008-09-16 11:08:21 UTC (rev 9903) +++ trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2008-09-16 12:22:42 UTC (rev 9904) @@ -68,6 +68,8 @@ } synchronized void startHoverWatcher(boolean isStart) { + if (viewer.isPreviewOnly()) + return; try { if (isStart) { if (hoverWatcherThread != null) Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-16 11:08:21 UTC (rev 9903) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-16 12:22:42 UTC (rev 9904) @@ -1990,7 +1990,7 @@ setCurrentModelIndex(0); setBackgroundModelIndex(-1); setFrankOn(getShowFrank()); - mouseManager.startHoverWatcher(!isPreviewOnly); + mouseManager.startHoverWatcher(true); setTainted(true); finalizeTransformParameters(); } @@ -3892,6 +3892,10 @@ return statusManager.getStatusChanged(statusNameList); } + boolean isPreviewOnly() { + return isPreviewOnly; + } + void popupMenu(int x, int y) { if (isPreviewOnly || global.disablePopupMenu) return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-16 20:40:02
|
Revision: 9905 http://jmol.svn.sourceforge.net/jmol/?rev=9905&view=rev Author: hansonr Date: 2008-09-17 03:39:58 +0000 (Wed, 17 Sep 2008) Log Message: ----------- version=11.6.RC15 VERSION # bug fix: CML files not properly loading symmetry # bug fix: O- radius MUCH too large. # code: thread control for Java Swing in applet context # thread creating Swing objects MUST be event thread # -- using SwingUtilities.invokeAndWait() from the commandWatcher thread # new feature: load menu items for signed applet # new feature: save menu items for signed applet # bug fix: applet -- setting a jmolScript callback prevents menu updates # new feature: minimize menu item # new feature: signed applet allows "load ?" and includes previewer # bug fix: H-M spacegroup designations specifying nonstandard Hall symbols by default # new feature: signed applet/application load ?xxx uses load dialog # webexport help updated to reflect ability to handle files opened with "load append" Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java trunk/Jmol/src/org/jmol/modelset/Atom.java trunk/Jmol/src/org/jmol/modelset/Bond.java trunk/Jmol/src/org/jmol/modelset/BondCollection.java trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/symmetry/SpaceGroup.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/JmolConstants.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -184,13 +184,13 @@ HashMap atts) { //if (!uri.equals(NAMESPACE_URI)) //return; -/* + try { - System.out.println(name + "::"+atts.get("name")); + System.out.println(name + "::" + atts.get("name")); } catch (Exception e) { System.out.println(name); } -*/ + switch (state) { case START: if (name.equals("molecule")) { @@ -204,9 +204,10 @@ state = CRYSTAL; } else if (name.equals("symmetry")) { state = SYMMETRY; - localSpaceGroupName = (atts.containsKey("spaceGroup") ? (String) atts.get("spaceGroup") : "P1"); + localSpaceGroupName = (atts.containsKey("spaceGroup") ? (String) atts + .get("spaceGroup") : "P1"); } else if (name.equals("module")) { - moduleCount++; + moduleCount++; } break; @@ -220,7 +221,7 @@ int iColon = scalarDictRef.indexOf(":"); scalarDictValue = scalarDictRef.substring(iColon + 1); //scalarDictKey = scalarDictRef - // .substring(0, (iColon >= 0 ? iColon : 0)); + // .substring(0, (iColon >= 0 ? iColon : 0)); } } else if (name.equals("symmetry")) { state = CRYSTAL_SYMMETRY; @@ -346,8 +347,6 @@ if (name.equals("atom")) { state = MOLECULE_ATOM; atom = new Atom(); - boolean coords3D = false; - boolean coordsFractional = false; parent.setFractionalCoordinates(false); if (atts.containsKey("label")) atom.atomName = (String) atts.get("label"); @@ -355,24 +354,18 @@ atom.atomName = (String) atts.get("id"); if (atts.containsKey("xFract") && (parent.iHaveUnitCell || !atts.containsKey("x3"))) { - coords3D = coordsFractional = true; parent.setFractionalCoordinates(true); parent.setAtomCoord(atom, parseFloat((String) atts.get("xFract")), parseFloat((String) atts.get("yFract")), parseFloat((String) atts .get("zFract"))); + } else if (atts.containsKey("x3")) { + parent.setAtomCoord(atom, parseFloat((String) atts.get("x3")), + parseFloat((String) atts.get("y3")), parseFloat((String) atts + .get("z3"))); + } else if (atts.containsKey("x2")) { + parent.setAtomCoord(atom, parseFloat((String) atts.get("x2")), + parseFloat((String) atts.get("y2")), 0); } - if (atts.containsKey("x3") && !coordsFractional) { - coords3D = true; - atom.x = parseFloat((String) atts.get("x3")); - atom.y = parseFloat((String) atts.get("y3")); - atom.z = parseFloat((String) atts.get("z3")); - } - if (atts.containsKey("x2") && !coords3D ) { - atom.x = parseFloat((String) atts.get("x2")); - atom.y = parseFloat((String) atts.get("y2")); - atom.z = 0; - } - parent.setAtomCoord(atom); if (atts.containsKey("elementType")) atom.elementSymbol = (String) atts.get("elementType"); if (atts.containsKey("formalCharge")) @@ -384,7 +377,7 @@ if (atts.containsKey("builtin")) { setKeepChars(true); state = MOLECULE_BOND_BUILTIN; - scalarDictValue = (String) atts.get("builtin"); + scalarDictValue = (String) atts.get("builtin"); } break; case MOLECULE_ATOM: @@ -397,12 +390,12 @@ int iColon = scalarDictRef.indexOf(":"); scalarDictValue = scalarDictRef.substring(iColon + 1); //scalarDictKey = scalarDictRef - // .substring(0, (iColon >= 0 ? iColon : 0)); + // .substring(0, (iColon >= 0 ? iColon : 0)); } } else if (atts.containsKey("builtin")) { setKeepChars(true); state = MOLECULE_ATOM_BUILTIN; - scalarDictValue = (String) atts.get("builtin"); + scalarDictValue = (String) atts.get("builtin"); } break; case MOLECULE_ATOM_SCALAR: @@ -424,7 +417,8 @@ case START: if (name.equals("module")) { moduleCount--; - applySymmetry(); + if (iHaveUnitCell) + applySymmetry(); } break; case CRYSTAL: @@ -440,14 +434,12 @@ setKeepChars(false); if (tokens.length != 3 || cellParameterType == null) { } else if (cellParameterType.equals("length")) { - parent.needToApplySymmetry = true; for (int i = 0; i < 3; i++) parent.setUnitCellItem(i, parseFloat(tokens[i])); break; } else if (cellParameterType.equals("angle")) { for (int i = 0; i < 3; i++) parent.setUnitCellItem(i + 3, parseFloat(tokens[i])); - applySymmetry(); break; } //if here, then something is wrong @@ -491,14 +483,13 @@ case CRYSTAL_SYMMETRY: case SYMMETRY: if (name.equals("symmetry")) { - applySymmetry(); state = (state == CRYSTAL_SYMMETRY ? CRYSTAL : START); } break; case MOLECULE: if (name.equals("molecule")) { if (--moleculeNesting == 0) { - // if <molecule> is within <module>, then + // if <molecule> is within <molecule>, then // we have to wait until the end of <module> to // apply symmetry. applySymmetry(); Modified: trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -1026,7 +1026,6 @@ //////////////////////////////////////////////////////////////// void addTrajectory() { - //System.out.println(atomCount); if (trajectory.length == 0 || trajectory.length < atomCount) { trajectory = new Point3f[atomCount]; } Modified: trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/export/dialog/FilePreview.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -130,6 +130,7 @@ script = "zap"; } else { String fileName = file.getAbsolutePath(); + System.out.println("updatePreview "+ fileName + " " + chooser.getSelectedFile()); String url = Dialog.getLocalUrl(file); System.out.println("updatePreview + " + fileName + " " + url); if (url != null) @@ -139,8 +140,8 @@ if (fileName.indexOf(".spt") >= 0) script = "script " + script; else - script = "zap;set echo top left;echo loading...;refresh; load " + script - + ";if({1}.size);cartoons only;color structure;endif"; + script = "zap;set echo top left;echo loading...;refresh;load " + script + + ";if({1-10000}.size);cartoons only;color structure;endif"; } display.getViewer().evalStringQuiet(script); //display.repaint(); Modified: trunk/Jmol/src/org/jmol/modelset/Atom.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/Atom.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/modelset/Atom.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -274,7 +274,7 @@ } public int getRasMolRadius() { - return Math.abs(madAtom / (4 * 2)); + return Math.abs(madAtom / 8); // 1000r = 1000d / 2; rr = (1000r / 4); } public int getCovalentBondCount() { Modified: trunk/Jmol/src/org/jmol/modelset/Bond.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/Bond.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/modelset/Bond.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -79,10 +79,8 @@ Bond(Atom atom1, Atom atom2, short order, short mad, short colix) { - if (atom1 == null) + if (atom1 == null || atom2 == null) throw new NullPointerException(); - if (atom2 == null) - throw new NullPointerException(); this.atom1 = atom1; this.atom2 = atom2; if (atom1.getElementNumber() == 16 && atom2.getElementNumber() == 16) Modified: trunk/Jmol/src/org/jmol/modelset/BondCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/BondCollection.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/modelset/BondCollection.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -245,41 +245,36 @@ protected short getBondOrder(Atom atomA, float bondingRadiusA, Atom atomB, float bondingRadiusB, float distance2, float minBondDistance2, float bondTolerance) { - if (bondingRadiusA == 0 || bondingRadiusB == 0) + if (bondingRadiusA == 0 || bondingRadiusB == 0 || distance2 < minBondDistance2) return 0; float maxAcceptable = bondingRadiusA + bondingRadiusB + bondTolerance; float maxAcceptable2 = maxAcceptable * maxAcceptable; - if (distance2 < minBondDistance2) { - return 0; - } - if (distance2 <= maxAcceptable2) { - return 1; - } - return 0; + return (distance2 > maxAcceptable2 ? (short) 0 : (short) 1); } private boolean haveWarned = false; - void checkValencesAndBond(Atom atomA, Atom atomB, short order, short mad, + boolean checkValencesAndBond(Atom atomA, Atom atomB, short order, short mad, BitSet bsBonds) { if (atomA.getCurrentBondCount() > JmolConstants.MAXIMUM_AUTO_BOND_COUNT || atomB.getCurrentBondCount() > JmolConstants.MAXIMUM_AUTO_BOND_COUNT) { if (!haveWarned) Logger.warn("maximum auto bond count reached"); haveWarned = true; - return; + return false; } int formalChargeA = atomA.getFormalCharge(); if (formalChargeA != 0) { int formalChargeB = atomB.getFormalCharge(); if ((formalChargeA < 0 && formalChargeB < 0) || (formalChargeA > 0 && formalChargeB > 0)) - return; + return false; } if (atomA.alternateLocationID != atomB.alternateLocationID && atomA.alternateLocationID != '\0' && atomB.alternateLocationID != '\0') - return; + return false; getOrAddBond(atomA, atomB, order, mad, bsBonds); + return true; } protected void deleteAllBonds() { Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -2094,8 +2094,8 @@ .getBondingRadiusFloat(), iter.foundDistance2(), minBondDistance2, bondTolerance); if (order > 0) { - checkValencesAndBond(atom, atomNear, order, mad, bsBonds); - nNew++; + if (checkValencesAndBond(atom, atomNear, order, mad, bsBonds)) + nNew++; } } iter.release(); Modified: trunk/Jmol/src/org/jmol/symmetry/SpaceGroup.java =================================================================== --- trunk/Jmol/src/org/jmol/symmetry/SpaceGroup.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/symmetry/SpaceGroup.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -453,10 +453,10 @@ name = name.substring(0, i).trim(); } - // generate spaceless abbreviation "P m m m" --> "Pmmm" + // generate spaceless abbreviation "P m m m" --> "Pmmm" "P 2(1)/c" --> "P21/c" String abbr = ""; for (i = 0; i < name.length(); i++) { - if (name.charAt(i) != ' ') + if (" ()".indexOf(name.charAt(i)) < 0) abbr += name.charAt(i); } SpaceGroup s; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-17 03:39:58 UTC (rev 9905) @@ -1,8 +1,10 @@ # Developers: to add a description of changes you have made, # add it on a line starting with # below the "version=..." line -version=11.6.RC15_dev2 +version=11.6.RC15 +# bug fix: CML files not properly loading symmetry +# bug fix: O- radius MUCH too large. # code: thread control for Java Swing in applet context # thread creating Swing objects MUST be event thread # -- using SwingUtilities.invokeAndWait() from the commandWatcher thread Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-09-16 12:22:42 UTC (rev 9904) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-09-17 03:39:58 UTC (rev 9905) @@ -1395,28 +1395,30 @@ (95 << 4) + (4 + 4), 920, // "Am+4" }; + // Q: What does it mean that X(-1) radius >> X(-2) radius? + private final static short[] anionLookupTable = { (1 << 4) + (-1 + 4), 1540, // "H-1" (6 << 4) + (-4 + 4), 2600, // "C-4" (7 << 4) + (-3 + 4), 1710, // "N-3" (8 << 4) + (-2 + 4), 1320, // "O-2" - (8 << 4) + (-1 + 4), 1760, // "O-1" + (8 << 4) + (-1 + 4), 1000, // "O-1" // this was 1760! But then RC(=0)O- is rediculously bonded (9 << 4) + (-1 + 4), 1330, // "F-1" (14 << 4) + (-4 + 4), 2710, // "Si-4" - (14 << 4) + (-1 + 4), 3840, // "Si-1" + (14 << 4) + (-1 + 4), 3840, // "Si-1" // same problem here? (15 << 4) + (-3 + 4), 2120, // "P-3" (16 << 4) + (-2 + 4), 1840, // "S-2" (17 << 4) + (-1 + 4), 1810, // "Cl-1" (32 << 4) + (-4 + 4), 2720, // "Ge-4" (33 << 4) + (-3 + 4), 2220, // "As-3" (34 << 4) + (-2 + 4), 1910, // "Se-2" - (34 << 4) + (-1 + 4), 2320, // "Se-1" + (34 << 4) + (-1 + 4), 2320, // "Se-1" // same problem here? (35 << 4) + (-1 + 4), 1960, // "Br-1" (50 << 4) + (-4 + 4), 2940, // "Sn-4" - (50 << 4) + (-1 + 4), 3700, // "Sn-1" + (50 << 4) + (-1 + 4), 3700, // "Sn-1" // same problem here? (51 << 4) + (-3 + 4), 2450, // "Sb-3" (52 << 4) + (-2 + 4), 2110, // "Te-2" - (52 << 4) + (-1 + 4), 2500, // "Te-1" + (52 << 4) + (-1 + 4), 2500, // "Te-1" // same problem here? (53 << 4) + (-1 + 4), 2200, // "I-1" }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-18 04:38:09
|
Revision: 9906 http://jmol.svn.sourceforge.net/jmol/?rev=9906&view=rev Author: hansonr Date: 2008-09-18 11:38:04 +0000 (Thu, 18 Sep 2008) Log Message: ----------- 11.6.RC15 VERSION # note: CML reader only reads the first structure of a file # bug fix: CML reader not assigning atom labels # bug fix: CML files not properly loading symmetry # bug fix: O- formal charge radius MUCH too large; N+ MUCH too small. -- REMOVED # code: thread control for Java Swing in applet context # thread creating Swing objects MUST be event thread # -- using SwingUtilities.invokeAndWait() from the commandWatcher thread # new feature: load menu items for signed applet # new feature: save menu items for signed applet # bug fix: applet -- setting a jmolScript callback prevents menu updates # new feature: minimize menu item # new feature: signed applet allows "load ?" and includes previewer # bug fix: H-M spacegroup designations specifying nonstandard Hall symbols by default # new feature: signed applet/application load ?xxx uses load dialog # webexport help updated to reflect ability to handle files opened with "load append" Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java trunk/Jmol/src/org/jmol/applet/Jvm12.java trunk/Jmol/src/org/jmol/export/dialog/Dialog.java trunk/Jmol/src/org/jmol/modelset/ModelLoader.java trunk/Jmol/src/org/jmol/popup/JmolPopup.java trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java trunk/Jmol/src/org/jmol/viewer/FileManager.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/ScriptManager.java trunk/Jmol/src/org/jmol/viewer/StatusManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/adapter/readers/xml/XmlCmlReader.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -29,6 +29,7 @@ import java.io.BufferedReader; import java.util.HashMap; import java.util.NoSuchElementException; +import java.util.Properties; import java.util.StringTokenizer; import netscape.javascript.JSObject; @@ -106,9 +107,11 @@ int tokenCount; String[] tokens = new String[16]; - int moduleCount = 0; + int nModules = 0; + int moduleNestingLevel = 0; boolean haveMolecule = false; String localSpaceGroupName; + boolean processing = true; /** * state constants */ @@ -179,18 +182,21 @@ // parent molecule that exists. int moleculeNesting = 0; boolean embeddedCrystal = false; + Properties atomIdNames; public void processStartElement(String uri, String name, String qName, HashMap atts) { //if (!uri.equals(NAMESPACE_URI)) //return; - try { +/* try { System.out.println(name + "::" + atts.get("name")); } catch (Exception e) { System.out.println(name); } - +*/ + if (!processing) + return; switch (state) { case START: if (name.equals("molecule")) { @@ -207,7 +213,8 @@ localSpaceGroupName = (atts.containsKey("spaceGroup") ? (String) atts .get("spaceGroup") : "P1"); } else if (name.equals("module")) { - moduleCount++; + moduleNestingLevel++; + nModules++; } break; @@ -216,13 +223,7 @@ state = CRYSTAL_SCALAR; setKeepChars(true); scalarTitle = (String) atts.get("title"); - scalarDictRef = (String) atts.get("dictRef"); - if (scalarDictRef != null) { - int iColon = scalarDictRef.indexOf(":"); - scalarDictValue = scalarDictRef.substring(iColon + 1); - //scalarDictKey = scalarDictRef - // .substring(0, (iColon >= 0 ? iColon : 0)); - } + getDictRefValue(atts); } else if (name.equals("symmetry")) { state = CRYSTAL_SYMMETRY; if (atts.containsKey("spaceGroup")) { @@ -385,13 +386,7 @@ state = MOLECULE_ATOM_SCALAR; setKeepChars(true); scalarTitle = (String) atts.get("title"); - scalarDictRef = (String) atts.get("dictRef"); - if (scalarDictRef != null) { - int iColon = scalarDictRef.indexOf(":"); - scalarDictValue = scalarDictRef.substring(iColon + 1); - //scalarDictKey = scalarDictRef - // .substring(0, (iColon >= 0 ? iColon : 0)); - } + getDictRefValue(atts); } else if (atts.containsKey("builtin")) { setKeepChars(true); state = MOLECULE_ATOM_BUILTIN; @@ -409,16 +404,28 @@ } } + private void getDictRefValue(HashMap atts) { + scalarDictRef = (String) atts.get("dictRef"); + if (scalarDictRef != null) { + int iColon = scalarDictRef.indexOf(":"); + scalarDictValue = scalarDictRef.substring(iColon + 1); + } + } + public void processEndElement(String uri, String name, String qName) { //if (!uri.equals(NAMESPACE_URI)) //return; //System.out.println("END: " + name); + if (!processing) + return; switch (state) { case START: if (name.equals("module")) { - moduleCount--; - if (iHaveUnitCell) - applySymmetry(); + if (--moduleNestingLevel == 0) { + if (parent.iHaveUnitCell) + applySymmetry(); + atomIdNames = atomSetCollection.setAtomNames(atomIdNames); + } } break; case CRYSTAL: @@ -485,14 +492,17 @@ if (name.equals("symmetry")) { state = (state == CRYSTAL_SYMMETRY ? CRYSTAL : START); } + if (moduleNestingLevel == 0 && parent.iHaveUnitCell) + applySymmetry(); break; case MOLECULE: if (name.equals("molecule")) { if (--moleculeNesting == 0) { // if <molecule> is within <molecule>, then - // we have to wait until the end of <module> to + // we have to wait until the end of all <molecule>s to // apply symmetry. - applySymmetry(); + applySymmetry(); + atomIdNames = atomSetCollection.setAtomNames(atomIdNames); state = START; } else { state = MOLECULE; @@ -536,6 +546,10 @@ state = MOLECULE_ATOM; if ("jmol:charge".equals(scalarDictRef)) { atom.partialCharge = parseFloat(chars); + } else if (scalarDictRef != null && "_atom_site_label".equals(scalarDictValue)) { + if (atomIdNames == null) + atomIdNames = new Properties(); + atomIdNames.put(atom.atomName, chars); } } setKeepChars(false); @@ -662,7 +676,7 @@ } public void applySymmetry() { - if (moduleCount > 0 || !haveMolecule) + if (moduleNestingLevel > 0 || !haveMolecule) return; if (localSpaceGroupName == null) return; Modified: trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollection.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -1333,4 +1333,15 @@ return v; } + public Properties setAtomNames(Properties atomIdNames) { + // for CML reader "a3" --> "N3" + if (atomIdNames == null) + return null; + String s; + for (int i = 0; i < atomCount; i++) + if ((s = atomIdNames.getProperty(atoms[i].atomName)) != null) + atoms[i].atomName = s; + return null; + } + } Modified: trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -372,6 +372,7 @@ if (Logger.debugging) { Logger.debug("setunitcellitem " + i + " " + x); } + System.out.println("atomSetCollection unitcell item " + i + " = " + x); if (i < 6) iHaveUnitCell = checkUnitCell(6); else if(++nMatrixElements == 12) Modified: trunk/Jmol/src/org/jmol/applet/Jvm12.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -27,6 +27,7 @@ import java.lang.reflect.InvocationTargetException; import javax.swing.SwingUtilities; +import javax.swing.UIManager; import org.jmol.api.*; import org.jmol.util.Logger; @@ -44,6 +45,12 @@ this.viewer = viewer; this.modelAdapter = modelAdapter; this.appletContext = appletContext; + try { + UIManager + .setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); + } catch (Exception exc) { + System.err.println("Error loading L&F: " + exc); + } } private final Rectangle rectClip = new Rectangle(); Modified: trunk/Jmol/src/org/jmol/export/dialog/Dialog.java =================================================================== --- trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/export/dialog/Dialog.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -111,11 +111,18 @@ if (fileName.indexOf(":") < 0) openChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); } + + UIManager.put("FileChooser.fileNameLabelText", GT._("File or URL:")); + File file = null; if (openChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) file = openChooser.getSelectedFile(); + + UIManager.put("FileChooser.fileNameLabelText", GT._("File Name:")); + if (file == null) return closePreview(); + if (historyFile != null) historyFile.addWindowInfo(windowName, openChooser.getDialog(), null); @@ -126,7 +133,7 @@ viewer.setStringProperty("currentLocalPath", file.getParent()); fileName = file.getAbsolutePath(); } - boolean doAppend = (openPreview != null && openPreview.isAppendSelected()); + boolean doAppend = (allowAppend && openPreview != null && openPreview.isAppendSelected()); closePreview(); return (doAppend ? "load append " + Escape.escape(fileName) : fileName); } @@ -171,6 +178,8 @@ String sType = fileName.substring(pt + 1); if (pt >= 0 && sType.length() > 0) saveChooser.addChoosableFileFilter(new TypeFilter(sType)); + if (fileName.equals("*")) + fileName = viewer.getModelSetFileName(); if (fileName.indexOf(".") == 0) fileName = "Jmol" + fileName; file = new File(fileName); @@ -435,7 +444,7 @@ UIManager.put("FileChooser.fileDateHeaderText", GT._("Modified")); UIManager.put("FileChooser.fileDescriptionText", GT._("Generic File")); UIManager.put("FileChooser.fileNameHeaderText", GT._("Name")); - UIManager.put("FileChooser.fileNameLabelText", GT._("File or URL:")); + UIManager.put("FileChooser.fileNameLabelText", GT._("File Name:")); UIManager.put("FileChooser.fileSizeHeaderText", GT._("Size")); UIManager.put("FileChooser.filesOfTypeLabelText", GT._("Files of Type:")); UIManager.put("FileChooser.fileTypeHeaderText", GT._("Type")); Modified: trunk/Jmol/src/org/jmol/modelset/ModelLoader.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelLoader.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/modelset/ModelLoader.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -706,11 +706,17 @@ if (iterBond == null) return; short mad = viewer.getMadBond(); + short order; defaultCovalentMad = (jmolData == null ? mad : 0); + boolean haveMultipleBonds = false; while (iterBond.hasNext()) { - bondAtoms(iterBond.getAtomUniqueID1(), iterBond.getAtomUniqueID2(), - (short) iterBond.getEncodedOrder()); + order = (short) iterBond.getEncodedOrder(); + bondAtoms(iterBond.getAtomUniqueID1(), iterBond.getAtomUniqueID2(), order); + if (order > 1) + haveMultipleBonds = true; } + if (haveMultipleBonds && someModelsHaveSymmetry && !viewer.getApplySymmetryToBonds()) + Logger.info("ModelSet: use \"set appletSymmetryToBonds TRUE \" to apply the file-based multiple bonds to symmetry-generated atoms."); defaultCovalentMad = mad; } Modified: trunk/Jmol/src/org/jmol/popup/JmolPopup.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/JmolPopup.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/popup/JmolPopup.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -856,8 +856,8 @@ if (script.indexOf("SELECT") == 0) { return "select thisModel and (" + script.substring(6) + ")"; } - - if ((pt = id.lastIndexOf("[")) >= 0) { + + if ((pt = id.lastIndexOf("[")) >= 0) { // setSpin id = id.substring(pt + 1); if ((pt = id.indexOf("]")) >= 0) @@ -865,11 +865,15 @@ id = id.replace('_', ' '); if (script.indexOf("[]") < 0) script = "[] " + script; - return TextFormat.simpleReplace(script, "[]", id); - } else if (script.indexOf("?FILEROOT?") >= 0) + return TextFormat.simpleReplace(script, "[]", id); + } else if (script.indexOf("?FILEROOT?") >= 0) { script = TextFormat.simpleReplace(script, "FILEROOT?", modelSetRoot); - else if (script.indexOf("?FILE?") >= 0) + } else if (script.indexOf("?FILE?") >= 0) { script = TextFormat.simpleReplace(script, "FILE?", modelSetFileName); + } else if (script.indexOf("?PdbId?") >= 0) { + script = TextFormat.simpleReplace(script, "PdbId?", + "=" + (modelSetRoot.length() == 4 && modelSetRoot.indexOf(".") < 0 ? modelSetRoot : "1crn")); + } return script; } Modified: trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -480,7 +480,7 @@ { "showSpacegroup", "console on;show spacegroup" }, { "showState", "console on;show state" }, - { "loadPdb", "load ?=1crn" }, + { "loadPdb", "load ?PdbId?" }, { "loadFileOrURL", "load ?" }, { "loadFileUnitCell", "load ? {1 1 1}" }, { "loadScript", "script ?.spt" }, Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -613,7 +613,7 @@ break; boolean isURL = (iurlPrefix >= 0); boolean isApplet = (appletDocumentBase != null); - InputStream in; + InputStream in = null; int length; try { if (isApplet || isURL) { @@ -635,6 +635,12 @@ } return new MonitorInputStream(in, length); } catch (Exception e) { + try { + if (in != null) + in.close(); + } catch (IOException e1) { + // TODO + } errorMessage = "" + e; } return errorMessage; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-18 11:38:04 UTC (rev 9906) @@ -3,8 +3,10 @@ version=11.6.RC15 +# note: CML reader only reads the first structure of a file +# bug fix: CML reader not assigning atom labels # bug fix: CML files not properly loading symmetry -# bug fix: O- radius MUCH too large. +# bug fix: O- formal charge radius MUCH too large; N+ MUCH too small. -- REMOVED # code: thread control for Java Swing in applet context # thread creating Swing objects MUST be event thread # -- using SwingUtilities.invokeAndWait() from the commandWatcher thread Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -1223,7 +1223,19 @@ * At the same time, the table was split into cations and anions for easier * retrieval. * - * Bob Hanson is suspicious of Sn(-IV) + * O- and N+ removed 9/2008 - BH. The problem is that + * the formal charge is used to determine bonding radius. + * But these formal charges are different than the charges used in + * compilation of HCP data (which is crystal ionic radii). + * Specifically, because O- and N+ are very common in organic + * compounds, I have removed their radii from the table FOR OUR PURPOSES HERE. + * + * I suppose there are some ionic compounds that have O- and N+ as + * isolated ions, but what they would be I have no clue. Better to + * be safe and go with somewhat more reasonable values. + * + * Argh. Changed for Jmol 11.6.RC15 + * * ****************************************************************/ @@ -1237,7 +1249,7 @@ (5 << 4) + (1 + 4), 350, // "B+1" (5 << 4) + (3 + 4), 230, // "B+3" (6 << 4) + (4 + 4), 160, // "C+4" - (7 << 4) + (1 + 4), 250, // "N+1" + (7 << 4) + (1 + 4), 680, // "N+1" // covalent radius -- 250 way too small for organic charges (7 << 4) + (3 + 4), 160, // "N+3" (7 << 4) + (5 + 4), 130, // "N+5" (8 << 4) + (1 + 4), 220, // "O+1" @@ -1401,24 +1413,24 @@ (1 << 4) + (-1 + 4), 1540, // "H-1" (6 << 4) + (-4 + 4), 2600, // "C-4" (7 << 4) + (-3 + 4), 1710, // "N-3" - (8 << 4) + (-2 + 4), 1320, // "O-2" - (8 << 4) + (-1 + 4), 1000, // "O-1" // this was 1760! But then RC(=0)O- is rediculously bonded + (8 << 4) + (-2 + 4), 1360, // "O-2" *Shannon (1976) + (8 << 4) + (-1 + 4), 680, // "O-1" *necessary for CO2-, NO2, etc. (9 << 4) + (-1 + 4), 1330, // "F-1" - (14 << 4) + (-4 + 4), 2710, // "Si-4" - (14 << 4) + (-1 + 4), 3840, // "Si-1" // same problem here? + //(14 << 4) + (-4 + 4), 2710, // "Si-4" *not in 77th + //(14 << 4) + (-1 + 4), 3840, // "Si-1" *not in 77th (15 << 4) + (-3 + 4), 2120, // "P-3" (16 << 4) + (-2 + 4), 1840, // "S-2" (17 << 4) + (-1 + 4), 1810, // "Cl-1" (32 << 4) + (-4 + 4), 2720, // "Ge-4" (33 << 4) + (-3 + 4), 2220, // "As-3" - (34 << 4) + (-2 + 4), 1910, // "Se-2" - (34 << 4) + (-1 + 4), 2320, // "Se-1" // same problem here? + (34 << 4) + (-2 + 4), 1980, // "Se-2" *Shannon (1976) + //(34 << 4) + (-1 + 4), 2320, // "Se-1" *not in 77th (35 << 4) + (-1 + 4), 1960, // "Br-1" (50 << 4) + (-4 + 4), 2940, // "Sn-4" - (50 << 4) + (-1 + 4), 3700, // "Sn-1" // same problem here? + (50 << 4) + (-1 + 4), 3700, // "Sn-1" (51 << 4) + (-3 + 4), 2450, // "Sb-3" (52 << 4) + (-2 + 4), 2110, // "Te-2" - (52 << 4) + (-1 + 4), 2500, // "Te-1" // same problem here? + (52 << 4) + (-1 + 4), 2500, // "Te-1" (53 << 4) + (-1 + 4), 2200, // "I-1" }; Modified: trunk/Jmol/src/org/jmol/viewer/ScriptManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptManager.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/viewer/ScriptManager.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -87,7 +87,7 @@ scriptItem.addElement(isQuiet ? Boolean.TRUE : Boolean.FALSE); scriptItem.addElement(new Integer(useCommandThread ? -1 : 1)); scriptQueue.addElement(scriptItem); - if (Logger.debugging) + if (true || Logger.debugging) Logger.info(scriptQueue.size() + " scripts; added: " + strScript); startScriptQueue(false); return "pending"; @@ -143,9 +143,10 @@ Vector getScriptItem(boolean watching, boolean isByCommandWatcher) { Vector scriptItem = (Vector) scriptQueue.elementAt(0); int flag = (((Integer) scriptItem.elementAt(5)).intValue()); - boolean isOK = (watching ? flag < 0 : isByCommandWatcher ? flag == 0 + boolean isOK = (watching ? flag < 0 + : isByCommandWatcher ? flag == 0 : flag == 1); - //System.out.println("checking queue for thread " + (watching ? 1 : 0) + "watching = " + watching + " flag=" + flag + " isOK = " + isOK + " " + scriptItem.get(0)); + //System.out.println("checking queue for thread " + (watching ? 1 : 0) + "watching = " + watching + " isbycommandthread=" + isByCommandWatcher + " flag=" + flag + " isOK = " + isOK + " " + scriptItem.get(0)); return (isOK ? scriptItem : null); } @@ -157,23 +158,34 @@ public ScriptQueueRunnable(boolean startedByCommandThread, int pt) { this.startedByCommandThread = startedByCommandThread; this.pt = pt; + //System.out.println("scriptqueurunnable " + startedByCommandThread + " " + pt + " " + this); } public void run() { while (scriptQueue.size() != 0) { + /* System.out.println("run while size != 0: " + this + " pt=" + this.pt + " size=" + scriptQueue.size()); + for (int i = 0; i < scriptQueue.size(); i++) + System.out.println("queue: " + i + " " + scriptQueue.get(i)); + System.out.println("running: " + scriptQueueRunning[0] + " " + queueThreads[0]); + System.out.println("running: " + scriptQueueRunning[1] + " " + queueThreads[1]); + */ + if (!runNextScript()) try { Thread.sleep(100); //cycle for the command watcher thread } catch (Exception e) { + System.out.println(this + " Exception " + e.getMessage()); break; //-- interrupt? } } - queueThreads[pt] = null; + //System.out.println("scriptquenerunnable " + pt + " done " + this); + queueThreads[pt].interrupt(); stop(); } public void stop() { scriptQueueRunning[pt] = false; + queueThreads[pt] = null; viewer.setSyncDriver(StatusManager.SYNC_ENABLE); } @@ -193,7 +205,9 @@ Logger.info("Queue[" + pt + "][" + scriptQueue.size() + "] scripts; running: " + script); } - scriptQueue.removeElement(scriptItem); + //System.out.println("removing: " + scriptItem); + scriptQueue.removeElementAt(0); + //System.out.println("removed: " + scriptItem); runScript(returnType, script, statusList, isScriptFile, isQuiet); if (scriptQueue.size() == 0) {// might have been cleared with an exit //Logger.info("SCRIPT QUEUE READY", 0); @@ -205,8 +219,10 @@ private void runScript(String returnType, String strScript, String statusList, boolean isScriptFile, boolean isQuiet) { + //System.out.println("runScript evalstrngwait " + strScript); viewer.evalStringWaitStatus(returnType, strScript, statusList, isScriptFile, isQuiet, true); + //System.out.println("runScript evalstrngwait DONE"); } } @@ -250,7 +266,7 @@ * The 5th vector position is an Integer flag. * * -1 -- Owned by CommandWatcher; ready for thread assignment - * 0 -- Owned by CommmadWatcher; running + * 0 -- Owned by CommandWatcher; running * 1 -- Owned by the JavaScript-enabled/browser-limited thread * * If the command is to be ignored by the CommandWatcher, the flag is set @@ -283,7 +299,7 @@ } } } catch (InterruptedException ie) { - Logger.info("CommandWatcher InterruptedException!"); + Logger.info("CommandWatcher InterruptedException! " + this); break; } catch (Exception ie) { String s = "script processing ERROR:\n\n" + ie.toString(); Modified: trunk/Jmol/src/org/jmol/viewer/StatusManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StatusManager.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/viewer/StatusManager.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -267,7 +267,7 @@ && viewer.getDebugScript()) { jmolStatusListener.notifyCallback(JmolConstants.CALLBACK_SCRIPT, new Object[] { null, "script <exiting>", statusMessage, new Integer(-1) }); - strStatus = "Chime script completed."; + strStatus = "Jmol script completed."; } jmolStatusListener.notifyCallback(JmolConstants.CALLBACK_SCRIPT, new Object[] { null, strStatus, statusMessage, Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-17 03:39:58 UTC (rev 9905) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-18 11:38:04 UTC (rev 9906) @@ -425,7 +425,7 @@ stateManager.setCrystallographicDefaults();//modelSet.someModelsHavePeriodicOrigin); else setAxesModeMolecular(false); - + prevFrame = Integer.MIN_VALUE; refresh(1, "Viewer:homePosition()"); } @@ -3423,7 +3423,6 @@ /// direct no-queue use: public String scriptWait(String strScript) { - //System.out.println("Viewer scriptWait1 " + htmlName + " " + strScript + " "); scriptManager.waitForQueue(); boolean doTranslateTemp = GT.getDoTranslate(); GT.setDoTranslate(false); @@ -3435,7 +3434,6 @@ } public Object scriptWaitStatus(String strScript, String statusList) { - //System.out.println("Viewer scriptWait2 " + htmlName + " " + strScript); scriptManager.waitForQueue(); boolean doTranslateTemp = GT.getDoTranslate(); GT.setDoTranslate(false); @@ -3447,7 +3445,6 @@ public Object evalStringWaitStatus(String returnType, String strScript, String statusList) { - //System.out.println("Viewer scriptWait3 " + htmlName + " " + strScript); scriptManager.waitForQueue(); return evalStringWaitStatus(returnType, strScript, statusList, false, false, false); @@ -3461,6 +3458,8 @@ boolean isScriptFile, boolean isQuiet, boolean isQueued) { // from the scriptManager or scriptWait() + System.out.println("DEBUG: evalStringWaitStatus " + Thread.currentThread().getName() + + " " + Thread.currentThread().getId()); if (checkResume(strScript)) return "script processing resumed"; //be very odd if this fired if (checkHalt(strScript)) @@ -3907,9 +3906,12 @@ statusManager.setJmolStatusListener(jmolStatusListener); } + int prevFrame = Integer.MIN_VALUE; + void setStatusFrameChanged(int frameNo) { transformManager.setVibrationPeriod(Float.NaN); int modelIndex = repaintManager.currentModelIndex; + int firstIndex = repaintManager.firstModelIndex; int lastIndex = repaintManager.lastModelIndex; @@ -3944,6 +3946,11 @@ global.setParameterValue("_modelFile", (modelIndex < 0 ? "" : getModelFileName(modelIndex))); + if (modelIndex == prevFrame) { + return; + } + prevFrame = modelIndex; + s = statusManager.getCallbackScript("animframecallback"); if (s != null) evalStringQuiet(s, true, false); @@ -3966,7 +3973,7 @@ String fileName, String modelName, String strError) { String s = statusManager.getCallbackScript("loadstructcallback"); - if (s != null) + if (s != null && ptLoad >= 0 && strError == null) evalStringQuiet(s, true, false); statusManager.setStatusFileLoaded(s, fullPathName, fileName, modelName, strError, ptLoad); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-20 15:29:30
|
Revision: 9910 http://jmol.svn.sourceforge.net/jmol/?rev=9910&view=rev Author: hansonr Date: 2008-09-20 15:29:23 +0000 (Sat, 20 Sep 2008) Log Message: ----------- 11.6.RC15 VERSION # new feature: data() and DATA expanded to allow fixed-column entry Modified Paths: -------------- trunk/Jmol/src/org/jmol/modelset/AtomCollection.java trunk/Jmol/src/org/jmol/util/Parser.java trunk/Jmol/src/org/jmol/viewer/DataManager.java 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 trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/modelset/AtomCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2008-09-20 01:51:41 UTC (rev 9909) +++ trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2008-09-20 15:29:23 UTC (rev 9910) @@ -656,7 +656,7 @@ taint(atomIndex, (byte) type); } if (type == TAINT_MAX && n > 0) - viewer.setData(name, new Object[] {name, fData, bs}, 0, 0, 0); + viewer.setData(name, new Object[] {name, fData, bs}, 0, 0, 0, 0, 0); } catch (Exception e) { Logger.error("AtomCollection.loadData error: " + e); Modified: trunk/Jmol/src/org/jmol/util/Parser.java =================================================================== --- trunk/Jmol/src/org/jmol/util/Parser.java 2008-09-20 01:51:41 UTC (rev 9909) +++ trunk/Jmol/src/org/jmol/util/Parser.java 2008-09-20 15:29:23 UTC (rev 9910) @@ -74,55 +74,102 @@ } return data; } + + /** + * + * @param f + * @param bs + * @param data + */ + public static void setSelectedFloats(float f, BitSet bs, float[] data) { + for (int i = 0; i < data.length; i++) + if (bs == null || bs.get(i)) + data[i] = f; + } - public static void parseFloatArrayFromMatchAndField(String str, BitSet bs, - int fieldMatch, - int[] matchData, - int field, float[] data) { + public static float[] extractData(String data, int field, int nBytes, + int firstLine) { + return parseFloatArrayFromMatchAndField(data, null, 0, 0, null, field, + nBytes, null, firstLine); + } + + /** + * the major lifter here. + * + * @param str string containing the data + * @param bs selects specific rows of the data + * @param fieldMatch a free-format field pointer, or a column pointer + * @param fieldMatchColumnCount specifies a column count -- not free-format + * @param matchData an array of data to match (atom numbers) + * @param field a free-format field pointer, or a column pointer + * @param fieldColumnCount specifies a column count -- not free-format + * @param data float array to modify or null if size unknown + * @param firstLine first line to parse (1 indicates all) + * @return data + */ + public static float[] parseFloatArrayFromMatchAndField( + String str, + BitSet bs, + int fieldMatch, + int fieldMatchColumnCount, + int[] matchData, + int field, + int fieldColumnCount, + float[] data, int firstLine) { float f; - if (field == Integer.MIN_VALUE) { //just one value - f = parseFloat(str); - for (int i = 0; i < data.length; i++) - if (bs == null || bs.get(i)) - data[i] = f; - return; - } - if (field <= 0) { - parseFloatArray(str, bs, data); - return; - } - int len = data.length; int i = -1; boolean isMatch = (matchData != null); int[] lines = markLines(str, (str.indexOf('\n') >= 0 ? '\n' : ';')); + int iLine = (firstLine <= 1 || firstLine >= lines.length ? 0 : firstLine - 1); + int pt = (iLine == 0 ? 0 : lines[iLine - 1]); int nLines = lines.length; - int pt = 0; - for (int iLine = 0; iLine < nLines; iLine++) { - String[] tokens = getTokens(str.substring(pt, lines[iLine])); + if (data == null) + data = new float[nLines - iLine]; + int len = data.length; + int minLen = (fieldColumnCount <= 0 ? Math.max(field, fieldMatch) : Math + .max(field + fieldColumnCount, fieldMatch + fieldMatchColumnCount) - 1); + + for (; iLine < nLines; iLine++) { + String line = str.substring(pt, lines[iLine]).trim(); pt = lines[iLine]; - if (tokens.length < field || tokens.length < fieldMatch - || Float.isNaN(f = parseFloat(tokens[field - 1]))) - continue; + String[] tokens = (fieldColumnCount <= 0 ? getTokens(line) : null); + // check for inappropriate data -- line too short or too few tokens or NaN for data + // and parse data + if (fieldColumnCount <= 0) { + if (tokens.length < minLen + || Float.isNaN(f = parseFloat(tokens[field - 1]))) + continue; + } else { + if (line.length() < minLen + || Float.isNaN(f = parseFloat(line.substring(field - 1, field + + fieldColumnCount - 1)))) + continue; + } int iData; if (isMatch) { - iData = parseInt(tokens[fieldMatch - 1]); - //in the fieldMatch column we have an integer pointing into matchData - //we replace that number then with the corresponding number in matchData + iData = parseInt(tokens == null ? line.substring(fieldMatch - 1, + fieldMatch + fieldMatchColumnCount - 1) : tokens[fieldMatch - 1]); + // in the fieldMatch column we have an integer pointing into matchData + // we replace that number then with the corresponding number in matchData if (iData == Integer.MIN_VALUE || iData < 0 || iData >= len || (iData = matchData[iData]) < 0) continue; + // and we set bs to indicate we are updating that value if (bs != null) bs.set(iData); } else { + // no match data + // bs here indicates the specific data elements that need filling while (++i < len && bs != null && !bs.get(i)) { } if (i >= len) - return; + return data; iData = i; } data[iData] = f; - //System.out.println("assigning " + data[iData] + " to " + iData); + //System.out.println("data[" + iData + "] = " + data[iData]); } + return data; } /** Modified: trunk/Jmol/src/org/jmol/viewer/DataManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/DataManager.java 2008-09-20 01:51:41 UTC (rev 9909) +++ trunk/Jmol/src/org/jmol/viewer/DataManager.java 2008-09-20 15:29:23 UTC (rev 9910) @@ -51,7 +51,8 @@ } void setData(Viewer viewer, String type, Object[] data, int atomCount, - int matchField, int field) { + int matchField, int matchFieldColumnCount, int field, + int fieldColumnCount) { //Eval /* * data[0] -- label @@ -78,41 +79,56 @@ } if (bsUserVdws == null) setUserVdw(defaultVdw); - Parser.parseFloatArrayFromMatchAndField(stringData, bsUserVdws, 1, (int[]) data[2], 2, userVdws); - for (int i = userVdws.length; --i >= 0; ) - userVdwMars[i] = (int)(userVdws[i] * 1000); + Parser.parseFloatArrayFromMatchAndField(stringData, bsUserVdws, 1, 0, + (int[]) data[2], 2, 0, userVdws, 1); + for (int i = userVdws.length; --i >= 0;) + userVdwMars[i] = (int) (userVdws[i] * 1000); return; - } + } if (data[2] != null && atomCount > 0) { String stringData = (String) data[1]; - boolean createNew = (matchField != 0 - || field != Integer.MIN_VALUE && field != Integer.MAX_VALUE); + boolean createNew = (matchField != 0 || field != Integer.MIN_VALUE + && field != Integer.MAX_VALUE); Object[] oldData = (Object[]) dataValues.get(type); BitSet bs; - float[] f = (oldData == null || createNew ? new float[atomCount] + float[] f = (oldData == null || createNew ? new float[atomCount] : ArrayUtil.ensureLength(((float[]) oldData[1]), atomCount)); + + // check to see if the data COULD be interpreted as a string of float values + // and if so, do that. This pre-fetches the tokens in that case. + String[] strData = null; - if (field == Integer.MIN_VALUE && - (strData = Parser.getTokens(stringData)).length > 1) + if (field == Integer.MIN_VALUE + && (strData = Parser.getTokens(stringData)).length > 1) field = 0; - if (field == 0 || field == Integer.MAX_VALUE) { + + if (field == Integer.MIN_VALUE) { + // set the selected data elements to a single value bs = (BitSet) data[2]; - if (strData == null) - strData = Parser.getTokens(stringData); - Parser.parseFloatArray(strData, bs, f); - } else if (matchField == 0) { + Parser.setSelectedFloats(Parser.parseFloat(stringData), bs, f); + } else if (field == 0 || field == Integer.MAX_VALUE) { + // just get the selected token values bs = (BitSet) data[2]; - Parser.parseFloatArrayFromMatchAndField(stringData, bs, 0, null, field, f); + Parser.parseFloatArray(strData == null ? Parser.getTokens(stringData) + : strData, bs, f); + } else if (matchField <= 0) { + // get the specified field >= 1 for the selected atoms + bs = (BitSet) data[2]; + Parser.parseFloatArrayFromMatchAndField(stringData, bs, 0, 0, null, + field, fieldColumnCount, f, 1); } else { - int[] iData = (int[]) data[2]; + // get the selected field, with an integer match in a specified field + // in this case, bs is created and indicates which data points were set + int[] iData = (int[]) data[2]; + Parser.parseFloatArrayFromMatchAndField(stringData, null, matchField, + matchFieldColumnCount, iData, field, fieldColumnCount, f, 1); bs = new BitSet(); - Parser.parseFloatArrayFromMatchAndField(stringData, null, matchField, iData, field, f); - for (int i = iData.length; --i >= 0; ) + for (int i = iData.length; --i >= 0;) if (iData[i] >= 0) bs.set(iData[i]); } if (oldData != null && oldData[2] instanceof BitSet && !createNew) - bs.or((BitSet)(oldData[2])); + bs.or((BitSet) (oldData[2])); data[2] = bs; data[1] = f; if (type.indexOf("property_") == 0) { @@ -125,7 +141,7 @@ fValues[n++] = f[i]; viewer.setAtomProperty(bs, tok, 0, 0, fValues); } - } + } } dataValues.put(type, data); } @@ -281,5 +297,5 @@ return (bs == null ? sb.toString() : "\n DATA \"element_vdw\"\n" + sb.append(" end \"element_vdw\";\n\n").toString()); } - + } Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-09-20 01:51:41 UTC (rev 9909) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-09-20 15:29:23 UTC (rev 9910) @@ -4003,7 +4003,7 @@ dataLabel = parameterAsString(1); if (dataLabel.equalsIgnoreCase("clear")) { if (!isSyntaxCheck) - viewer.setData(null, null, 0, 0, 0); + viewer.setData(null, null, 0, 0, 0, 0, 0); return; } if ((i = dataLabel.indexOf("@")) >= 0) { @@ -4039,13 +4039,14 @@ for (int ie = 1; ie <= n; ie++) eArray[ie] = ie; data[2] = eArray; - viewer.setData("element_vdw", data, n, 0, 0); + viewer.setData("element_vdw", data, n, 0, 0, 0, 0); return; - } else if (dataType.indexOf("data2d_") == 0) { + } + if (dataType.indexOf("data2d_") == 0) { //data2d someName data[0] = dataLabel; data[1] = Parser.parseFloatArray2d(dataString); - viewer.setData(dataLabel, data, 0, 0, 0); + viewer.setData(dataLabel, data, 0, 0, 0, 0, 0); return; } String[] tokens = Parser.getTokens(dataLabel); @@ -4053,22 +4054,34 @@ && !(tokens.length == 2 && tokens[1].equals("set"))) { BitSet bs = viewer.getSelectionSet(); data[0] = dataType; - int atomNumberField = isOneValue ? 0 : ((Integer) viewer - .getParameter("propertyAtomNumberField")).intValue(); - int propertyField = isOneValue ? Integer.MIN_VALUE : ((Integer) viewer - .getParameter("propertyDataField")).intValue(); + int atomNumberField = (isOneValue ? 0 : ((Integer) viewer + .getParameter("propertyAtomNumberField")).intValue()); + int atomNumberFieldColumnCount = (isOneValue ? 0 : ((Integer) viewer + .getParameter("propertyAtomNumberColumnCount")).intValue()); + int propertyField = (isOneValue ? Integer.MIN_VALUE : ((Integer) viewer + .getParameter("propertyDataField")).intValue()); + int propertyFieldColumnCount = (isOneValue ? 0 : ((Integer) viewer + .getParameter("propertyDataColumnCount")).intValue()); if (!isOneValue && dataLabel.indexOf(" ") >= 0) { - // DATA "property_whatever [atomField] [propertyField]" if (tokens.length == 3) { + // DATA "property_whatever [atomField] [propertyField]" dataLabel = tokens[0]; atomNumberField = Parser.parseInt(tokens[1]); propertyField = Parser.parseInt(tokens[2]); - if (atomNumberField < 0) - atomNumberField = 0; - if (propertyField < 0) - propertyField = 0; } + if (tokens.length == 5) { + // DATA "property_whatever [atomField] [atomFieldColumnCount] [propertyField] [propertyDataColumnCount]" + dataLabel = tokens[0]; + atomNumberField = Parser.parseInt(tokens[1]); + atomNumberFieldColumnCount = Parser.parseInt(tokens[2]); + propertyField = Parser.parseInt(tokens[3]); + propertyFieldColumnCount = Parser.parseInt(tokens[4]); + } } + if (atomNumberField < 0) + atomNumberField = 0; + if (propertyField < 0) + propertyField = 0; int atomCount = viewer.getAtomCount(); int[] atomMap = null; BitSet bsAtoms = new BitSet(atomCount); @@ -4091,12 +4104,12 @@ } data[1] = dataString; viewer.setData(dataType, data, atomCount, atomNumberField, - propertyField); + atomNumberFieldColumnCount, propertyField, propertyFieldColumnCount); userType = Integer.MAX_VALUE; //we're done } else { data[0] = dataLabel; data[1] = dataString; - viewer.setData(dataType, data, 0, 0, 0); + viewer.setData(dataType, data, 0, 0, 0, 0, 0); } } if (processModel) { @@ -4771,7 +4784,7 @@ return; } if (tokAt(1) == Token.vanderwaals) { - viewer.setData("element_vdw", new Object[] {null, ""}, 0, 0, 0); + viewer.setData("element_vdw", new Object[] {null, ""}, 0, 0, 0, 0, 0); return; } String var = parameterAsString(1); @@ -7164,7 +7177,7 @@ if (propertyName.startsWith("property_")) { viewer.setData(propertyName, new Object[] { propertyName, Token.sValue(tv), bs }, viewer.getAtomCount(), 0, - tv.tok == Token.list ? Integer.MAX_VALUE : Integer.MIN_VALUE); + 0, tv.tok == Token.list ? Integer.MAX_VALUE : Integer.MIN_VALUE, 0); return; } setBitsetProperty(bs, tokProperty, Token.iValue(tv), Token.fValue(tv), tv); @@ -7180,7 +7193,7 @@ int n = viewer.getAtomCount(); viewer.setData(key, new Object[] { key, "" + v, viewer.getSelectionSet() }, n, 0, - Integer.MIN_VALUE); + 0, Integer.MIN_VALUE, 0); return; } if (v == null) @@ -11420,7 +11433,7 @@ boolean useBraces = true;//(!Compiler.tokAttr(tok, Token.atomExpressionCommand)); boolean inBrace = false; boolean inClauseDefine = false; - boolean setEquals = (tok == Token.set && ((String) statement[0].value) == ""); + boolean setEquals = (tok == Token.set && ((String) statement[0].value) == "" && tokAt(1) != Token.expressionBegin); for (int i = 0; i < statementLength; ++i) { if (iToken == i - 1) sb.append(" <<"); @@ -11608,9 +11621,10 @@ else if (message.indexOf("file recognized as a script file:") >= 0) isOK = true; if (!isOK) { - this.message += contextTrace(); - if (!isSyntaxCheck) + if (!isSyntaxCheck) { + this.message += contextTrace(); Logger.error("eval ERROR: " + toString()); + } } } @@ -12611,12 +12625,43 @@ } private boolean evaluateData(Token[] args) { - if (args.length == 0 || args.length > 2) + + // x = data("somedataname") # the data + // x = data("data2d_xxxx") # 2D data (x,y paired values) + // x = data("data2d_xxxx", iSelected) # selected row of 2D data, with <=0 meaning "relative to the last row" + // x = data("property_x", "property_y") # array addition of two property sets + // x = data({atomno < 10},"xyz") # (or "pdb" or "mol") coordinate data in xyz, pdb, or mol format + // x = data(someData,ptrFieldOrColumn,nBytes,firstLine) # extraction of a column of data based on a field (nBytes = 0) or column range (nBytes > 0) + if (args.length != 1 && args.length != 2 && args.length != 4) return false; if (isSyntaxCheck) return addX(""); String selected = Token.sValue(args[0]); String type = (args.length == 2 ? Token.sValue(args[1]) : ""); + + if (args.length == 4) { + int iField = Token.iValue(args[1]); + int nBytes = Token.iValue(args[2]); + int firstLine = Token.iValue(args[3]); + float[] f = Parser.extractData(selected, iField, nBytes, firstLine); + return addX(Escape.escape(f)); + } + + if (selected.indexOf("data2d_") == 0) { + // tab, newline separated data + float[][] f1 = viewer.getDataFloat2D(selected); + if (f1 == null) + return addX(""); + if (args.length == 2 && args[1].tok == Token.integer) { + int pt = args[1].intValue; + if (pt < 0) + pt += f1.length; + if (pt >= 0 && pt < f1.length) + return addX(Escape.escape(f1[pt])); + return addX(""); + } + return addX(Escape.escape(f1, false)); + } // parallel addition of float property data sets @@ -12633,20 +12678,6 @@ } return addX(Escape.escape(f1)); } - if (selected.indexOf("data2d_") == 0) { - float[][] f1 = viewer.getDataFloat2D(selected); - if (f1 == null) - return addX(""); - if (args.length == 2 && args[1].tok == Token.integer) { - int pt = args[1].intValue; - if (pt < 0) - pt += f1.length; - if (pt >= 0 && pt < f1.length) - return addX(Escape.escape(f1[pt])); - return addX(""); - } - return addX(Escape.escape(f1, false)); - } // some other data type -- just return it Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-20 01:51:41 UTC (rev 9909) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-20 15:29:23 UTC (rev 9910) @@ -3,6 +3,7 @@ version=11.6.RC15 +# new feature: data() and DATA expanded to allow fixed-column entry # bug fix: data property_partialcharge does not update atomic partialCharge data itself for MEP # but instead just creates a data type "property_partialcharge" # bug fix: CML reader failst to load primitive lattice parameters when no symmetry Modified: trunk/Jmol/src/org/jmol/viewer/StateManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StateManager.java 2008-09-20 01:51:41 UTC (rev 9909) +++ trunk/Jmol/src/org/jmol/viewer/StateManager.java 2008-09-20 15:29:23 UTC (rev 9910) @@ -1195,8 +1195,10 @@ setParameterValue("pointGroupLinearTolerance", pointGroupLinearTolerance); setParameterValue("pointGroupDistanceTolerance", pointGroupDistanceTolerance); setParameterValue("propertyColorScheme", propertyColorScheme); + setParameterValue("propertyAtomNumberColumnCount", 0); + setParameterValue("propertyAtomNumberField", 0); + setParameterValue("propertyDataColumnCount", 0); setParameterValue("propertyDataField", 0); - setParameterValue("propertyAtomNumberField", 0); setParameterValue("quaternionFrame", quaternionFrame); setParameterValue("rangeSelected", rangeSelected); setParameterValue("refreshing", true); Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2008-09-20 01:51:41 UTC (rev 9909) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2008-09-20 15:29:23 UTC (rev 9910) @@ -540,9 +540,8 @@ // xxx(a,b) final static int random = 1 | 2 << 9 | mathfunc; - final static int data = 2 | 2 << 9 | mathfunc | command; - final static int cross = 3 | 2 << 9 | mathfunc; - final static int script = 4 | 2 << 9 | mathfunc | command; + final static int cross = 2 | 2 << 9 | mathfunc; + final static int script = 3 | 2 << 9 | mathfunc | command; // ___.xxx(a,b) @@ -562,10 +561,11 @@ // xxx(a,b,c,d) final static int angle = 1 | 4 << 9 | mathfunc; - final static int plane = 2 | 4 << 9 | mathfunc; - final static int point = 3 | 4 << 9 | mathfunc; - final static int quaternion = 4 | 4 << 9 | mathfunc | command; - final static int axisangle = 5 | 4 << 9 | mathfunc; + final static int data = 2 | 4 << 9 | mathfunc | command; + final static int plane = 3 | 4 << 9 | mathfunc; + final static int point = 4 | 4 << 9 | mathfunc; + final static int quaternion = 5 | 4 << 9 | mathfunc | command; + final static int axisangle = 6 | 4 << 9 | mathfunc; // xxx(a,b,c,d,e) Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-20 01:51:41 UTC (rev 9909) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-20 15:29:23 UTC (rev 9910) @@ -2597,8 +2597,10 @@ } public void setData(String type, Object[] data, int atomCount, - int matchField, int field) { - dataManager.setData(this, type, data, atomCount, matchField, field); + int matchField, int matchFieldColumnCount, int field, + int fieldColumnCount) { + dataManager.setData(this, type, data, atomCount, matchField, + matchFieldColumnCount, field, fieldColumnCount); } public static Object testData; // for isosurface @@ -4454,6 +4456,15 @@ boolean notFound = false; while (true) { + //11.6.RC16// + if (key.equalsIgnoreCase("propertyDataColumnCount")) { + break; + } + + if (key.equalsIgnoreCase("propertyAtomNumberColumnCount")) { + break; + } + //11.6.RC2// if (key.equalsIgnoreCase("dotDensity")) { global.dotDensity = value; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-20 20:06:12
|
Revision: 9911 http://jmol.svn.sourceforge.net/jmol/?rev=9911&view=rev Author: hansonr Date: 2008-09-20 20:06:04 +0000 (Sat, 20 Sep 2008) Log Message: ----------- 11.6.RC15 VERSION # new feature: MOL2 reader is PDB-enabled. Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java trunk/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java trunk/Jmol/src/org/jmol/api/JmolAdapter.java trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/quantum/MOCalculation.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java 2008-09-20 15:29:23 UTC (rev 9910) +++ trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java 2008-09-20 20:06:04 UTC (rev 9911) @@ -55,6 +55,7 @@ int nAtoms = 0; int atomCount = 0; + boolean isPDB = false; public AtomSetCollection readAtomSetCollection(BufferedReader reader) { this.reader = reader; @@ -97,6 +98,7 @@ */ + isPDB = false; String thisDataSetName = readLineTrimmed(); readLine(); line += " 0 0 0 0 0 0"; @@ -128,11 +130,15 @@ readLine(); } nAtoms += atomCount; + if (isPDB) { + atomSetCollection.setAtomSetCollectionAuxiliaryInfo("isPDB", + Boolean.TRUE); + atomSetCollection.setAtomSetAuxiliaryInfo("isPDB", Boolean.TRUE); + } applySymmetry(); } - void readAtoms(int atomCount, boolean iHaveCharges) - throws Exception { + void readAtoms(int atomCount, boolean iHaveCharges) throws Exception { // 1 Cs 0.0000 4.1230 0.0000 Cs 1 RES1 0.0000 // 1 C1 7.0053 11.3096 -1.5429 C.3 1 <0> -0.1912 // free format, but no blank lines @@ -149,13 +155,47 @@ if (elementSymbol.length() > 2) elementSymbol = elementSymbol.substring(0, 2); atom.elementSymbol = elementSymbol; - // apparently "NO_CHARGES" is not strictly enforced - // if (iHaveCharges) + // apparently "NO_CHARGES" is not strictly enforced + // if (iHaveCharges) + if (tokens.length > 6) + atom.sequenceNumber = parseInt(tokens[6]); + if (tokens.length > 7) { + atom.group3 = tokens[7]; + atom.isHetero = JmolAdapter.isHetero(atom.group3); + if (atom.group3.length() == 3 + && JmolAdapter.lookupGroupID(atom.group3) >= 0) { + isPDB = true; + } + if (isPDB) + atom.elementSymbol = deduceElementSymbol(atom.isHetero, tokens[5], atom.group3); + } if (tokens.length > 8) atom.partialCharge = parseFloat(tokens[8]); } } + String deduceElementSymbol(boolean isHetero, String XX, String group3) { + // short of having an entire table, + if (XX.equalsIgnoreCase(group3)) + return XX; // Cd Mg etc. + char ch1 = XX.charAt(0); + char ch2 = (XX.length() > 1 ? XX.charAt(1) : ' '); + String full = group3 + "." + ch1 + ch2; + // Cd Nd Ne are not in complex hetero; Ca is in these: + if (("OEC.CA ICA.CA OC1.CA OC2.CA OC4.CA").indexOf(full)>=0) + return "Ca"; + if ("NA NB NC ND NE NF NG NH CA CB CC CD CE CF CG CH OA OB OC OD OE OF OG OH".indexOf(XX) >= 0) + return "" + ch1; + if (isHetero && Atom.isValidElementSymbolNoCaseSecondChar(ch1, ch2)) + return (isHetero || ch1 != 'H' ? XX.trim() : "H"); + if (Atom.isValidElementSymbol(ch1)) + return "" + ch1; + if (Atom.isValidElementSymbol(ch2)) + return "" + ch2; + return "Xx"; + } + + void readBonds(int bondCount) throws Exception { // 6 1 42 1 // free format, but no blank lines Modified: trunk/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java 2008-09-20 15:29:23 UTC (rev 9910) +++ trunk/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java 2008-09-20 20:06:04 UTC (rev 9911) @@ -401,7 +401,6 @@ .getAtomSetAuxiliaryInfo(atomSetIndex); } - /* ************************************************************** * The frame related methods * **************************************************************/ @@ -512,6 +511,7 @@ public int getSequenceNumber() { return atom.sequenceNumber; } public char getInsertionCode() { return canonizeInsertionCode(atom.insertionCode); } + } class BondIterator extends JmolAdapter.BondIterator { @@ -597,6 +597,7 @@ return structure.endInsertionCode; } } + } Modified: trunk/Jmol/src/org/jmol/api/JmolAdapter.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolAdapter.java 2008-09-20 15:29:23 UTC (rev 9910) +++ trunk/Jmol/src/org/jmol/api/JmolAdapter.java 2008-09-20 20:06:04 UTC (rev 9911) @@ -30,7 +30,7 @@ import java.util.Hashtable; import java.util.BitSet; -import org.jmol.quantum.MOCalculation; +import org.jmol.modelset.Group; import org.jmol.viewer.JmolConstants; /**************************************************************** @@ -68,14 +68,14 @@ public final static short ORDER_PARTIAL32 = JmolConstants.BOND_PARTIAL32; public final static short ORDER_UNSPECIFIED = JmolConstants.BOND_ORDER_UNSPECIFIED; - public final static int SHELL_S = MOCalculation.SHELL_S; - public final static int SHELL_P = MOCalculation.SHELL_P; - public final static int SHELL_SP = MOCalculation.SHELL_SP; - public final static int SHELL_L = MOCalculation.SHELL_L; - public final static int SHELL_D_CARTESIAN = MOCalculation.SHELL_D_CARTESIAN; - public final static int SHELL_D_SPHERICAL = MOCalculation.SHELL_D_SPHERICAL; - public final static int SHELL_F_CARTESIAN = MOCalculation.SHELL_F_CARTESIAN; - public final static int SHELL_F_SPHERICAL = MOCalculation.SHELL_F_SPHERICAL; + public final static int SHELL_S = JmolConstants.SHELL_S; + public final static int SHELL_P = JmolConstants.SHELL_P; + public final static int SHELL_SP = JmolConstants.SHELL_SP; + public final static int SHELL_L = JmolConstants.SHELL_L; + public final static int SHELL_D_CARTESIAN = JmolConstants.SHELL_D_CARTESIAN; + public final static int SHELL_D_SPHERICAL = JmolConstants.SHELL_D_SPHERICAL; + public final static int SHELL_F_CARTESIAN = JmolConstants.SHELL_F_CARTESIAN; + public final static int SHELL_F_SPHERICAL = JmolConstants.SHELL_F_SPHERICAL; public static String getElementSymbol(int elementNumber) { return JmolConstants.elementSymbolFromNumber(elementNumber); @@ -90,25 +90,30 @@ } public static int getQuantumShellTagID(String tag) { - return MOCalculation.getQuantumShellTagID(tag); + return JmolConstants.getQuantumShellTagID(tag); } public static int getQuantumShellTagIDSpherical(String tag) { - return MOCalculation.getQuantumShellTagIDSpherical(tag); + return JmolConstants.getQuantumShellTagIDSpherical(tag); } final public static int getQuantumSubshellTagID(int shell, String tag) { - return MOCalculation.getQuantumSubshellTagID(shell, tag); + return JmolConstants.getQuantumSubshellTagID(shell, tag); } final public static String getQuantumSubshellTag(int shell, int subshell) { - return MOCalculation.getQuantumSubshellTag(shell, subshell); + return JmolConstants.getQuantumSubshellTag(shell, subshell); } final public static String canonicalizeQuantumSubshellTag(String tag) { - return MOCalculation.canonicalizeQuantumSubshellTag(tag); + return JmolConstants.canonicalizeQuantumSubshellTag(tag); } - + + final public static short lookupGroupID(String group3) { + return Group.lookupGroupID(group3); + } + + ////////////////////////////////////////////////////////////////// // file related ////////////////////////////////////////////////////////////////// Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-20 15:29:23 UTC (rev 9910) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-20 20:06:04 UTC (rev 9911) @@ -964,9 +964,9 @@ sb.append("MODEL " + (iModelLast + 1) + "\n"); } if (a.isHetero()) - sb.append(a.formatLabel("HETATM%5i %-4a%1A%3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \n", '\0', null)); + sb.append(a.formatLabel("HETATM%5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \n", '\0', null)); else - sb.append(a.formatLabel("ATOM %5i %-4a%1A%3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \n", '\0', null)); + sb.append(a.formatLabel("ATOM %5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \n", '\0', null)); } if (showModels) sb.append("ENDMDL\n"); Modified: trunk/Jmol/src/org/jmol/quantum/MOCalculation.java =================================================================== --- trunk/Jmol/src/org/jmol/quantum/MOCalculation.java 2008-09-20 15:29:23 UTC (rev 9910) +++ trunk/Jmol/src/org/jmol/quantum/MOCalculation.java 2008-09-20 20:06:04 UTC (rev 9911) @@ -27,11 +27,12 @@ import org.jmol.api.VolumeDataInterface; import org.jmol.jvxl.readers.Parameters; import org.jmol.util.Logger; +import org.jmol.viewer.JmolConstants; + import javax.vecmath.Point3f; import java.util.Vector; import java.util.Hashtable; import java.util.BitSet; -import java.util.Arrays; /* * See J. Computational Chemistry, vol 7, p 359, 1986. @@ -118,77 +119,6 @@ int gaussianPtr; int firstAtomOffset; - private final static String[][] shellOrder = { - {"S"}, - {"X", "Y", "Z"}, - {"S", "X", "Y", "Z"}, - {"XX", "YY", "ZZ", "XY", "XZ", "YZ"}, - {"d0", "d1+", "d1-", "d2+", "d2-"}, - {"XXX", "YYY", "ZZZ", "XYY", "XXY", "XXZ", "XZZ", "YZZ", "YYZ", "XYZ"}, - {"f0", "f1+", "f1-", "f2+", "f2-", "f3+", "f3-"} - }; - - final public static int SHELL_S = 0; - final public static int SHELL_P = 1; - final public static int SHELL_SP = 2; - final public static int SHELL_L = 2; - - // these next in cartesian/spherical pairs: - - final public static int SHELL_D_CARTESIAN = 3; - final public static int SHELL_D_SPHERICAL = 4; - final public static int SHELL_F_CARTESIAN = 5; - final public static int SHELL_F_SPHERICAL = 6; - - final private static String[] quantumShellTags = {"S", "P", "SP", "L", - "D", "5D", "F", "7F"}; - - final private static int[] quantumShellIDs = { - SHELL_S, SHELL_P, SHELL_SP, SHELL_L, - SHELL_D_CARTESIAN, SHELL_D_SPHERICAL, - SHELL_F_CARTESIAN, SHELL_F_SPHERICAL - }; - - final public static int getQuantumShellTagID(String tag) { - for (int i = quantumShellTags.length; --i >= 0;) - if (tag.equals(quantumShellTags[i])) - return quantumShellIDs[i]; - return -1; - } - - final public static int getQuantumShellTagIDSpherical(String tag) { - final int tagID = getQuantumShellTagID(tag); - return tagID + (tagID < SHELL_D_CARTESIAN ? 0 : tagID % 2); - } - - final public static String getQuantumShellTag(int shell) { - for (int i = quantumShellTags.length; --i >= 0;) - if (shell == quantumShellIDs[i]) - return quantumShellTags[i]; - return "" + shell; - } - - final public static String canonicalizeQuantumSubshellTag(String tag) { - char firstChar = tag.charAt(0); - if (firstChar == 'X' || firstChar == 'Y' || firstChar == 'Z') { - char[] sorted = tag.toCharArray(); - Arrays.sort(sorted); - return new String(sorted); - } - return tag; - } - - final public static int getQuantumSubshellTagID(int shell, String tag) { - for (int iSubshell = shellOrder[shell].length; --iSubshell >= 0; ) - if (shellOrder[shell][iSubshell].equals(tag)) - return iSubshell; - return -1; - } - - final public static String getQuantumSubshellTag(int shell, int subshell) { - return shellOrder[shell][subshell]; - } - public MOCalculation() { } @@ -273,7 +203,7 @@ if (doDebug) Logger.debug( "processShell: " + iShell - + " type=" + getQuantumShellTag(basisType) + + " type=" + JmolConstants.getQuantumShellTag(basisType) + " nGaussians=" + nGaussians + " atom=" + atomIndex ); @@ -296,25 +226,25 @@ } } switch(basisType) { - case SHELL_S: + case JmolConstants.SHELL_S: addDataS(nGaussians); break; - case SHELL_P: + case JmolConstants.SHELL_P: addDataP(nGaussians); break; - case SHELL_SP: + case JmolConstants.SHELL_SP: addDataSP(nGaussians); break; - case SHELL_D_CARTESIAN: + case JmolConstants.SHELL_D_CARTESIAN: addData6D(nGaussians); break; - case SHELL_D_SPHERICAL: + case JmolConstants.SHELL_D_SPHERICAL: addData5D(nGaussians); break; - case SHELL_F_CARTESIAN: + case JmolConstants.SHELL_F_CARTESIAN: addData10F(nGaussians); break; - case SHELL_F_SPHERICAL: + case JmolConstants.SHELL_F_SPHERICAL: addData7F(nGaussians); break; default: @@ -492,7 +422,7 @@ return; } if (doDebug) - dumpInfo(nGaussians, SHELL_F_CARTESIAN); + dumpInfo(nGaussians, JmolConstants.SHELL_F_CARTESIAN); setMinMax(); float alpha; @@ -596,7 +526,7 @@ return; } if (doDebug) - dumpInfo(nGaussians, SHELL_D_SPHERICAL); + dumpInfo(nGaussians, JmolConstants.SHELL_D_SPHERICAL); setMinMax(); @@ -678,7 +608,7 @@ } if (doDebug) - dumpInfo(nGaussians, SHELL_F_SPHERICAL); + dumpInfo(nGaussians, JmolConstants.SHELL_F_SPHERICAL); setMinMax(); @@ -894,18 +824,14 @@ for (int ig = 0; ig < nGaussians; ig++) { float alpha = gaussians[gaussianPtr + ig][0]; float c1 = gaussians[gaussianPtr + ig][1]; - if (Logger.debugging) { - Logger.debug("Gaussian " + (ig + 1) + " alpha=" + alpha + " c=" + c1); - } + Logger.debug("Gaussian " + (ig + 1) + " alpha=" + alpha + " c=" + c1); } - if (shell >= 0 && Logger.debugging){ - for (int i = 0; i < shellOrder[shell].length; i++) { - Logger.debug( - "MO coeff " + shellOrder[shell][i] + " " + - (moCoeff + i + 1) + " " + moCoefficients[moCoeff + i]); - } + if (shell >= 0 && Logger.debugging) { + String[] so = JmolConstants.getShellOrder(shell); + for (int i = 0; i < so.length; i++) + Logger.debug("MO coeff " + so[i] + " " + (moCoeff + i + 1) + " " + + moCoefficients[moCoeff + i]); } - } } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-20 15:29:23 UTC (rev 9910) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-20 20:06:04 UTC (rev 9911) @@ -3,6 +3,7 @@ version=11.6.RC15 +# new feature: MOL2 reader is PDB-enabled. # new feature: data() and DATA expanded to allow fixed-column entry # bug fix: data property_partialcharge does not update atomic partialCharge data itself for MEP # but instead just creates a data type "property_partialcharge" Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-09-20 15:29:23 UTC (rev 9910) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-09-20 20:06:04 UTC (rev 9911) @@ -29,6 +29,7 @@ import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Arrays; import java.util.Hashtable; import java.util.BitSet; import java.util.Properties; @@ -2883,4 +2884,81 @@ throw new NullPointerException(); } } + + // quantum MO calculation constants need to be here so quantum class is not opened + + private final static String[][] shellOrder = { + {"S"}, + {"X", "Y", "Z"}, + {"S", "X", "Y", "Z"}, + {"XX", "YY", "ZZ", "XY", "XZ", "YZ"}, + {"d0", "d1+", "d1-", "d2+", "d2-"}, + {"XXX", "YYY", "ZZZ", "XYY", "XXY", "XXZ", "XZZ", "YZZ", "YYZ", "XYZ"}, + {"f0", "f1+", "f1-", "f2+", "f2-", "f3+", "f3-"} + }; + + final public static String[] getShellOrder(int i) { + return shellOrder[i]; + } + + final public static int SHELL_S = 0; + final public static int SHELL_P = 1; + final public static int SHELL_SP = 2; + final public static int SHELL_L = 2; + + // these next in cartesian/spherical pairs: + + final public static int SHELL_D_CARTESIAN = 3; + final public static int SHELL_D_SPHERICAL = 4; + final public static int SHELL_F_CARTESIAN = 5; + final public static int SHELL_F_SPHERICAL = 6; + + final private static String[] quantumShellTags = {"S", "P", "SP", "L", + "D", "5D", "F", "7F"}; + + final private static int[] quantumShellIDs = { + SHELL_S, SHELL_P, SHELL_SP, SHELL_L, + SHELL_D_CARTESIAN, SHELL_D_SPHERICAL, + SHELL_F_CARTESIAN, SHELL_F_SPHERICAL + }; + + final public static int getQuantumShellTagID(String tag) { + for (int i = quantumShellTags.length; --i >= 0;) + if (tag.equals(quantumShellTags[i])) + return quantumShellIDs[i]; + return -1; + } + + final public static int getQuantumShellTagIDSpherical(String tag) { + final int tagID = getQuantumShellTagID(tag); + return tagID + (tagID < SHELL_D_CARTESIAN ? 0 : tagID % 2); + } + + final public static String getQuantumShellTag(int shell) { + for (int i = quantumShellTags.length; --i >= 0;) + if (shell == quantumShellIDs[i]) + return quantumShellTags[i]; + return "" + shell; + } + + final public static String canonicalizeQuantumSubshellTag(String tag) { + char firstChar = tag.charAt(0); + if (firstChar == 'X' || firstChar == 'Y' || firstChar == 'Z') { + char[] sorted = tag.toCharArray(); + Arrays.sort(sorted); + return new String(sorted); + } + return tag; + } + + final public static int getQuantumSubshellTagID(int shell, String tag) { + for (int iSubshell = shellOrder[shell].length; --iSubshell >= 0; ) + if (shellOrder[shell][iSubshell].equals(tag)) + return iSubshell; + return -1; + } + + final public static String getQuantumSubshellTag(int shell, int subshell) { + return shellOrder[shell][subshell]; + } } Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-20 15:29:23 UTC (rev 9910) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-20 20:06:04 UTC (rev 9911) @@ -6077,8 +6077,8 @@ exp = "{selected}.label(\"%{" + type + "}\")"; else if (type.equalsIgnoreCase("PDB")) //old crude - exp = "{selected and not hetero}.label(\"ATOM %5i %-4a%1A%3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \").lines" - + "+{selected and hetero}.label(\"HETATM%5i %-4a%1A%3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \").lines"; + exp = "{selected and not hetero}.label(\"ATOM %5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \").lines" + + "+{selected and hetero}.label(\"HETATM%5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2e \").lines"; else if (type.equalsIgnoreCase("MOL")) exp = "\"line1\nline2\nline3\n\"+(\"\"+{selected}.size)%-3+(\"\"+{selected}.bonds.size)%-3+\" 0 0 0\n\"" + "+{selected}.labels(\"%10.4x%10.4y%10.4z %-2e 0 0 0 0 0\").lines" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-22 04:11:45
|
Revision: 9918 http://jmol.svn.sourceforge.net/jmol/?rev=9918&view=rev Author: hansonr Date: 2008-09-22 04:11:38 +0000 (Mon, 22 Sep 2008) Log Message: ----------- version=11.6.RC16_dev # bug fix: mol2 PDB format better handling of chains and derived element types Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java 2008-09-21 18:33:52 UTC (rev 9917) +++ trunk/Jmol/src/org/jmol/adapter/readers/more/Mol2Reader.java 2008-09-22 04:11:38 UTC (rev 9918) @@ -26,7 +26,6 @@ import org.jmol.adapter.smarter.*; - import java.io.BufferedReader; import org.jmol.api.JmolAdapter; @@ -37,6 +36,19 @@ * <a href='http://www.tripos.com/data/support/mol2.pdf '> * http://www.tripos.com/data/support/mol2.pdf * </a> + * + * PDB note: + * + * Note that mol2 format of PDB files is quite minimal. All we + * get is the PDB atom name, coordinates, residue number, and residue name + * No chain terminator, not chain designator, no element symbol. + * + * Chains based on numbering reset just labeled A B C D .... Z a b c d .... z + * Element symbols based on reasoned guess and properties of hetero groups + * + * So this is just a hack -- trying to guess at all of these. + * + * *<p> */ @@ -53,11 +65,11 @@ public class Mol2Reader extends AtomSetCollectionReader { - int nAtoms = 0; - int atomCount = 0; - boolean isPDB = false; - - public AtomSetCollection readAtomSetCollection(BufferedReader reader) { + private int nAtoms = 0; + private int atomCount = 0; + private boolean isPDB = false; + + public AtomSetCollection readAtomSetCollection(BufferedReader reader) { this.reader = reader; atomSetCollection = new AtomSetCollection("mol2"); try { @@ -81,7 +93,7 @@ return atomSetCollection; } - void processMolecule() throws Exception { + private void processMolecule() throws Exception { /* 4-6 lines: ZINC02211856 55 58 0 0 0 @@ -100,6 +112,8 @@ isPDB = false; String thisDataSetName = readLineTrimmed(); + lastSequenceNumber = Integer.MAX_VALUE; + chainID = 'A' - 1; readLine(); line += " 0 0 0 0 0 0"; atomCount = parseInt(line); @@ -131,14 +145,17 @@ } nAtoms += atomCount; if (isPDB) { - atomSetCollection.setAtomSetCollectionAuxiliaryInfo("isPDB", - Boolean.TRUE); + atomSetCollection + .setAtomSetCollectionAuxiliaryInfo("isPDB", Boolean.TRUE); atomSetCollection.setAtomSetAuxiliaryInfo("isPDB", Boolean.TRUE); } applySymmetry(); } - void readAtoms(int atomCount, boolean iHaveCharges) throws Exception { + private int lastSequenceNumber = Integer.MAX_VALUE; + private char chainID = 'A' - 1; + + private void readAtoms(int atomCount, boolean iHaveCharges) throws Exception { // 1 Cs 0.0000 4.1230 0.0000 Cs 1 RES1 0.0000 // 1 C1 7.0053 11.3096 -1.5429 C.3 1 <0> -0.1912 // free format, but no blank lines @@ -157,37 +174,56 @@ atom.elementSymbol = elementSymbol; // apparently "NO_CHARGES" is not strictly enforced // if (iHaveCharges) - if (tokens.length > 6) + if (tokens.length > 6) { atom.sequenceNumber = parseInt(tokens[6]); + if (atom.sequenceNumber < lastSequenceNumber) { + if (chainID == 'Z') + chainID = 'a' - 1; + chainID++; + } + lastSequenceNumber = atom.sequenceNumber; + atom.chainID = chainID; + } if (tokens.length > 7) { atom.group3 = tokens[7]; atom.isHetero = JmolAdapter.isHetero(atom.group3); - if (atom.group3.length() == 3 + if (!isPDB && atom.group3.length() <= 3 && JmolAdapter.lookupGroupID(atom.group3) >= 0) { isPDB = true; - } + } if (isPDB) - atom.elementSymbol = deduceElementSymbol(atom.isHetero, tokens[5], atom.group3); + atom.elementSymbol = deduceElementSymbol(atom.isHetero, tokens[5], + atom.group3); + //System.out.print(atom.atomName + "/" + atom.elementSymbol + " " ); } if (tokens.length > 8) atom.partialCharge = parseFloat(tokens[8]); } } - String deduceElementSymbol(boolean isHetero, String XX, String group3) { + private static String deduceElementSymbol(boolean isHetero, String XX, + String group3) { // short of having an entire table, - if (XX.equalsIgnoreCase(group3)) - return XX; // Cd Mg etc. - char ch1 = XX.charAt(0); - char ch2 = (XX.length() > 1 ? XX.charAt(1) : ' '); + if (XX.equalsIgnoreCase(group3)) + return XX; // Cd Mg etc. + int i = 0; + int len = XX.length(); + char ch1 = ' '; + while (i < len && (ch1 = XX.charAt(i++)) <= '9') { + // find first nonnumeric letter + } + + char ch2 = (i < len ? XX.charAt(i) : ' '); String full = group3 + "." + ch1 + ch2; // Cd Nd Ne are not in complex hetero; Ca is in these: - if (("OEC.CA ICA.CA OC1.CA OC2.CA OC4.CA").indexOf(full)>=0) + if (("OEC.CA ICA.CA OC1.CA OC2.CA OC4.CA").indexOf(full) >= 0) return "Ca"; - if ("NA NB NC ND NE NF NG NH CA CB CC CD CE CF CG CH OA OB OC OD OE OF OG OH".indexOf(XX) >= 0) + if (XX.indexOf("'") > 0 || XX.indexOf("*") >= 0 + || "NCO".indexOf(ch1) >= 0 && ch2 <= 'H' + || XX.startsWith("CM")) return "" + ch1; if (isHetero && Atom.isValidElementSymbolNoCaseSecondChar(ch1, ch2)) - return (isHetero || ch1 != 'H' ? XX.trim() : "H"); + return (isHetero || ch1 != 'H' ? ("" + ch1 + ch2).trim() : "H"); if (Atom.isValidElementSymbol(ch1)) return "" + ch1; if (Atom.isValidElementSymbol(ch2)) @@ -195,8 +231,7 @@ return "Xx"; } - - void readBonds(int bondCount) throws Exception { + private void readBonds(int bondCount) throws Exception { // 6 1 42 1 // free format, but no blank lines for (int i = 0; i < bondCount; ++i) { @@ -205,13 +240,14 @@ int atomIndex2 = parseInt(tokens[2]); int order = parseInt(tokens[3]); if (order == Integer.MIN_VALUE) - order = (tokens[3].equals("ar") ? JmolAdapter.ORDER_AROMATIC : JmolAdapter.ORDER_UNSPECIFIED); - atomSetCollection - .addBond(new Bond(nAtoms + atomIndex1 - 1, nAtoms + atomIndex2 - 1, order)); + order = (tokens[3].equals("ar") ? JmolAdapter.ORDER_AROMATIC + : JmolAdapter.ORDER_UNSPECIFIED); + atomSetCollection.addBond(new Bond(nAtoms + atomIndex1 - 1, nAtoms + + atomIndex2 - 1, order)); } } - void readResInfo(int resCount) throws Exception { + private void readResInfo(int resCount) throws Exception { // free format, but no blank lines for (int i = 0; i < resCount; ++i) { readLine(); @@ -219,7 +255,7 @@ } } - void readCrystalInfo() throws Exception { + private void readCrystalInfo() throws Exception { // 4.1230 4.1230 4.1230 90.0000 90.0000 90.0000 221 1 readLine(); String[] tokens = getTokens(); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-21 18:33:52 UTC (rev 9917) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-22 04:11:38 UTC (rev 9918) @@ -3,6 +3,7 @@ version=11.6.RC16_dev +# bug fix: mol2 PDB format better handling of chains and derived element types # bug fix: save image button/menu interface broken in 11.6.RC15 # ----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-23 05:25:21
|
Revision: 9926 http://jmol.svn.sourceforge.net/jmol/?rev=9926&view=rev Author: hansonr Date: 2008-09-23 05:23:47 +0000 (Tue, 23 Sep 2008) Log Message: ----------- version=11.6.RC17_dev # bug fix: select model=0.0 causes infinite loop Modified Paths: -------------- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-22 22:00:33 UTC (rev 9925) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2008-09-23 05:23:47 UTC (rev 9926) @@ -776,7 +776,7 @@ int file = (int) (fDotM); int model = (int) ((fDotM - file + 0.00001) * 10000); - while (model % 10 == 0) + while (model != 0 && model % 10 == 0) model /= 10; return file * 1000000 + model; } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-22 22:00:33 UTC (rev 9925) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-23 05:23:47 UTC (rev 9926) @@ -3,6 +3,8 @@ version=11.6.RC17_dev +# bug fix: select model=0.0 causes infinite loop + # ----------------------------------------------------------------------------- #version=11.6.RC16 Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-22 22:00:33 UTC (rev 9925) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-23 05:23:47 UTC (rev 9926) @@ -3460,8 +3460,8 @@ boolean isScriptFile, boolean isQuiet, boolean isQueued) { // from the scriptManager or scriptWait() - System.out.println("DEBUG: evalStringWaitStatus " + Thread.currentThread().getName() - + " " + Thread.currentThread().getId()); + //System.out.println("DEBUG: evalStringWaitStatus " + Thread.currentThread().getName() + // + " " + Thread.currentThread().getId()); if (checkResume(strScript)) return "script processing resumed"; //be very odd if this fired if (checkHalt(strScript)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-23 13:29:38
|
Revision: 9927 http://jmol.svn.sourceforge.net/jmol/?rev=9927&view=rev Author: hansonr Date: 2008-09-23 13:29:34 +0000 (Tue, 23 Sep 2008) Log Message: ----------- version=11.6.RC17_dev # code: if (true...)/ if (false...) code cleanup # bug fix: select model=_modelNumber didn't differentiate between 2.10 and 2.1 Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/more/JaguarReader.java trunk/Jmol/src/org/jmol/export/_PovrayExporter.java trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceRenderer.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/ScriptManager.java trunk/Jmol/src/org/jmol/viewer/TransformManager.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/more/JaguarReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/more/JaguarReader.java 2008-09-23 05:23:47 UTC (rev 9926) +++ trunk/Jmol/src/org/jmol/adapter/readers/more/JaguarReader.java 2008-09-23 13:29:34 UTC (rev 9927) @@ -247,8 +247,8 @@ */ void readBasisNormalized() throws Exception { - //don't know what this is about yet -- asking Jimmy Stewart - + //TODO don't know what this is about yet -- Bob Hanson +/* if (true) return; String lastAtom = ""; @@ -271,6 +271,7 @@ rCoef = parseFloat(tokens[5]); } } +*/ } /* Modified: trunk/Jmol/src/org/jmol/export/_PovrayExporter.java =================================================================== --- trunk/Jmol/src/org/jmol/export/_PovrayExporter.java 2008-09-23 05:23:47 UTC (rev 9926) +++ trunk/Jmol/src/org/jmol/export/_PovrayExporter.java 2008-09-23 13:29:34 UTC (rev 9927) @@ -669,11 +669,12 @@ String s = coef[0] + "," + coef[1] + "," + coef[2] + "," + coef[3] + "," + coef[4] + "," + coef[5] + "," + coef[6] + "," + coef[7] + "," + coef[8] + "," + coef[9] + "," + color4(colix); - if (true || selectedPoints == null) { + //if (true || selectedPoints == null) { output("q(" + s + ")\n"); - return; - } + // return; + //} //TODO: The following does not work. + /* tempP1.set(ix, iy, iz); for (int i = 0; i < 3; i++) { tempP1.x += selectedPoints[i].x - ix; @@ -682,6 +683,7 @@ } output("qf(" + s + "," + ix + "," + iy + "," + iz + "," + tempP1.x + "," + tempP1.y + "," + tempP1.z + ")\n"); + */ } public void renderBackground() { Modified: trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceRenderer.java 2008-09-23 05:23:47 UTC (rev 9926) +++ trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceRenderer.java 2008-09-23 13:29:34 UTC (rev 9927) @@ -174,7 +174,7 @@ return; for (int i = vertexCount; --i >= 0;) { if (vertexValues != null && !Float.isNaN(vertexValues[i])) - if (true || (i % 3) == 0) { //investigate vertex normixes + //if ((i % 3) == 0) { //investigate vertex normixes ptTemp.set(mesh.vertices[i]); short n = mesh.normixes[i]; // -n is an intensity2sided and does not correspond to a true normal index @@ -184,7 +184,7 @@ g3d.fillCylinder(Graphics3D.ENDCAPS_SPHERICAL, 1, screens[i], ptTempi); } - } + //} } } Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-09-23 05:23:47 UTC (rev 9926) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-09-23 13:29:34 UTC (rev 9927) @@ -159,6 +159,10 @@ } private Object getNumericParameter(String var) { + if (var.equalsIgnoreCase("_modelNumber")) { + int modelIndex = viewer.getCurrentModelIndex(); + return new Integer(modelIndex < 0 ? 0 : viewer.getModelFileNumber(modelIndex)); + } Token token = getContextVariableAsToken(var); if (token == null) { Object val = viewer.getParameter(var); @@ -1375,7 +1379,8 @@ private BitSet expression(Token[] code, int pcStart, int pcStop, boolean allowRefresh, boolean allowUnderflow, - boolean mustBeBitSet, boolean andNotDeleted) throws ScriptException { + boolean mustBeBitSet, boolean andNotDeleted) + throws ScriptException { //note that this is general -- NOT just statement[] //errors reported would improperly access statement/line context //there should be no errors anyway, because this is for @@ -1528,8 +1533,8 @@ rpn.addX(getAtomBits(instruction.tok, (String) value)); break; case Token.spec_model: - // from select */1002 or */1000002 or */1.2 - // */1002 is equivalent to 1.2 when more than one file is present + // from select */1002 or */1000002 or */1.2 + // */1002 is equivalent to 1.2 when more than one file is present case Token.spec_model2: // from just using the number 1.2 int iModel = instruction.intValue; @@ -1549,14 +1554,17 @@ break; case Token.spec_resid: case Token.spec_chain: - rpn.addX(getAtomBits(instruction.tok, new Integer(instruction.intValue))); + rpn + .addX(getAtomBits(instruction.tok, + new Integer(instruction.intValue))); break; case Token.spec_seqcode: if (isInMath) { rpn.addX(instruction.intValue); break; } - rpn.addX(getAtomBits(Token.spec_seqcode, new Integer(getSeqCode(instruction)))); + rpn.addX(getAtomBits(Token.spec_seqcode, new Integer( + getSeqCode(instruction)))); break; case Token.spec_seqcode_range: if (isInMath) { @@ -1565,8 +1573,9 @@ rpn.addX(code[++pc].intValue); break; } - int chainID = (pc + 3 < code.length && code[pc + 2].tok == Token.opAnd - && code[pc + 3].tok == Token.spec_chain ? code[pc + 3].intValue : '\t'); + int chainID = (pc + 3 < code.length && code[pc + 2].tok == Token.opAnd + && code[pc + 3].tok == Token.spec_chain ? code[pc + 3].intValue + : '\t'); rpn.addX(getAtomBits(Token.spec_seqcode_range, new int[] { getSeqCode(instruction), getSeqCode(code[++pc]), chainID })); if (chainID != '\t') @@ -1622,15 +1631,15 @@ .modelFileNumberFromFloat(((Float) val).floatValue()); } if (val instanceof Integer || tokValue == Token.integer) { - comparisonValue *= (Compiler - .tokAttr(tokWhat, Token.comparefloatx100) ? 100 : 1); + comparisonValue *= (Compiler.tokAttr(tokWhat, Token.comparefloatx100) ? 100 + : 1); comparisonFloat = comparisonValue; - if (isModel && viewer.haveFileSet()) { - if (comparisonValue >= 1000 && comparisonValue < 1000000) { + if (isModel) { + tokWhat = -Token.model; + if (viewer.haveFileSet() && comparisonValue >= 1000 + && comparisonValue < 1000000) comparisonValue = (comparisonValue / 1000) * 1000000 + comparisonValue % 1000; - tokWhat = -Token.model; - } } } else if (val instanceof Float) { if (isModel) { @@ -1689,10 +1698,11 @@ error(ERROR_endOfStatementUnexpected); } expressionResult = ((Token) expressionResult).value; - if (expressionResult instanceof String && - (mustBeBitSet || ((String) expressionResult).startsWith("({"))) { + if (expressionResult instanceof String + && (mustBeBitSet || ((String) expressionResult).startsWith("({"))) { // allow for select @{x} where x is a string that can evaluate to a bitset - expressionResult = (isScriptCheck ? new BitSet() : getAtomBitSet(this, viewer, (String) expressionResult)); + expressionResult = (isScriptCheck ? new BitSet() : getAtomBitSet(this, + viewer, (String) expressionResult)); } if (!mustBeBitSet && !(expressionResult instanceof BitSet)) return null; // because result is in expressionResult in that case Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-23 05:23:47 UTC (rev 9926) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-23 13:29:34 UTC (rev 9927) @@ -3,7 +3,9 @@ version=11.6.RC17_dev -# bug fix: select model=0.0 causes infinite loop +# code: if (true...)/ if (false...) code cleanup +# bug fix: select model=_modelNumber didn't differentiate between 2.10 and 2.1 +# bug fix: select model=0.0 caused infinite loop # ----------------------------------------------------------------------------- Modified: trunk/Jmol/src/org/jmol/viewer/ScriptManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptManager.java 2008-09-23 05:23:47 UTC (rev 9926) +++ trunk/Jmol/src/org/jmol/viewer/ScriptManager.java 2008-09-23 13:29:34 UTC (rev 9927) @@ -87,7 +87,7 @@ scriptItem.addElement(isQuiet ? Boolean.TRUE : Boolean.FALSE); scriptItem.addElement(new Integer(useCommandThread ? -1 : 1)); scriptQueue.addElement(scriptItem); - if (true || Logger.debugging) + if (Logger.debugging) Logger.info(scriptQueue.size() + " scripts; added: " + strScript); startScriptQueue(false); return "pending"; Modified: trunk/Jmol/src/org/jmol/viewer/TransformManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/TransformManager.java 2008-09-23 05:23:47 UTC (rev 9926) +++ trunk/Jmol/src/org/jmol/viewer/TransformManager.java 2008-09-23 13:29:34 UTC (rev 9927) @@ -32,7 +32,6 @@ import javax.vecmath.AxisAngle4f; import org.jmol.util.Escape; -import org.jmol.util.Logger; import org.jmol.util.Quaternion; import java.util.BitSet; @@ -1212,9 +1211,8 @@ // note that the image is still centered at 0, 0 in the xy plane - if (false && Logger.debugging) - Logger.debug("modelCenterOffset + matrixTransform: " + modelCenterOffset - + matrixTransform); + // System.out.println("modelCenterOffset + matrixTransform: " + modelCenterOffset + // + matrixTransform); } @@ -1300,7 +1298,7 @@ void transformPoint(Point3f pointAngstroms, Point3f screen) { - //used solely by RocketsRenderer + //used solely by RocketsRendr matrixTransform.transform(pointAngstroms, point3fScreenTemp); adjustTemporaryScreenPoint(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-23 16:44:44
|
Revision: 9928 http://jmol.svn.sourceforge.net/jmol/?rev=9928&view=rev Author: hansonr Date: 2008-09-23 16:43:46 +0000 (Tue, 23 Sep 2008) Log Message: ----------- version=11.6.RC17_dev # bug fix: trajectories not enabled Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2008-09-23 13:29:34 UTC (rev 9927) +++ trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2008-09-23 16:43:46 UTC (rev 9928) @@ -277,7 +277,7 @@ // desiredSpaceGroupIndex, // a*10000, b*10000, c*10000, alpha*10000, beta*10000, gamma*10000] - isTrajectory = params[0] == -1; + isTrajectory = params[0] == Integer.MIN_VALUE; if (!isTrajectory) desiredModelNumber = params[0]; latticeCells[0] = params[1]; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-23 13:29:34 UTC (rev 9927) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-23 16:43:46 UTC (rev 9928) @@ -3,6 +3,7 @@ version=11.6.RC17_dev +# bug fix: trajectories not enabled # code: if (true...)/ if (false...) code cleanup # bug fix: select model=_modelNumber didn't differentiate between 2.10 and 2.1 # bug fix: select model=0.0 caused infinite loop This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-24 12:11:12
|
Revision: 9933 http://jmol.svn.sourceforge.net/jmol/?rev=9933&view=rev Author: hansonr Date: 2008-09-24 12:11:01 +0000 (Wed, 24 Sep 2008) Log Message: ----------- version=11.6.RC17_dev # bug fix: trajectories not enabled Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java trunk/Jmol/src/org/jmol/viewer/Eval.java Modified: trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2008-09-24 12:07:23 UTC (rev 9932) +++ trunk/Jmol/src/org/jmol/adapter/smarter/AtomSetCollectionReader.java 2008-09-24 12:11:01 UTC (rev 9933) @@ -277,7 +277,7 @@ // desiredSpaceGroupIndex, // a*10000, b*10000, c*10000, alpha*10000, beta*10000, gamma*10000] - isTrajectory = params[0] == Integer.MIN_VALUE; + isTrajectory = (params[0] == -1); if (!isTrajectory) desiredModelNumber = params[0]; latticeCells[0] = params[1]; Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-09-24 12:07:23 UTC (rev 9932) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-09-24 12:11:01 UTC (rev 9933) @@ -4295,7 +4295,7 @@ loadScript.append(" " + modelName); isAppend = (modelName.equalsIgnoreCase("append")); if (modelName.equalsIgnoreCase("trajectory")) - params[0] = Integer.MIN_VALUE; + params[0] = -1; } else { modelName = "fileset"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-25 20:57:15
|
Revision: 9938 http://jmol.svn.sourceforge.net/jmol/?rev=9938&view=rev Author: hansonr Date: 2008-09-25 20:57:09 +0000 (Thu, 25 Sep 2008) Log Message: ----------- version=11.6.RC17_dev # bug fix: Swing antialiasDisplay broken due to setTransparentBackground debugging Modified Paths: -------------- trunk/Jmol/src/org/jmol/g3d/Swing3D.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/g3d/Swing3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Swing3D.java 2008-09-25 20:51:02 UTC (rev 9937) +++ trunk/Jmol/src/org/jmol/g3d/Swing3D.java 2008-09-25 20:57:09 UTC (rev 9938) @@ -69,7 +69,8 @@ Image allocateImage() { - if (backgroundTransparent) + //backgroundTransparent not working with antialiasDisplay. I have no idea why. BH 9/24/08 + if (false && backgroundTransparent) return new BufferedImage( rgbColorModelT, Raster.createWritableRaster( @@ -99,7 +100,7 @@ private static boolean backgroundTransparent = false; void setBackgroundTransparent(boolean tf) { - backgroundTransparent = true; + backgroundTransparent = tf; } Image allocateOffscreenImage(int width, int height) { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-25 20:51:02 UTC (rev 9937) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-25 20:57:09 UTC (rev 9938) @@ -3,6 +3,7 @@ version=11.6.RC17_dev +# bug fix: Swing antialiasDisplay broken due to setTransparentBackground debugging # bug fix: trajectories not enabled # code: if (true...)/ if (false...) code cleanup # bug fix: select model=_modelNumber didn't differentiate between 2.10 and 2.1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |