From: <ha...@us...> - 2008-07-21 14:21:47
|
Revision: 9622 http://jmol.svn.sourceforge.net/jmol/?rev=9622&view=rev Author: hansonr Date: 2008-07-21 14:21:43 +0000 (Mon, 21 Jul 2008) Log Message: ----------- 11.5.49 VERSION (c) # bug fix: extra values in measure reporting, and wrong format Modified Paths: -------------- trunk/Jmol/src/org/jmol/modelset/Measurement.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java Modified: trunk/Jmol/src/org/jmol/modelset/Measurement.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/Measurement.java 2008-07-21 13:51:38 UTC (rev 9621) +++ trunk/Jmol/src/org/jmol/modelset/Measurement.java 2008-07-21 14:21:43 UTC (rev 9622) @@ -199,10 +199,12 @@ */ public String getMeasurementScript(String sep) { String str = ""; + boolean asScript = (sep.equals(" ")); for (int i = 1; i <= count; i++) { int atomIndex = countPlusIndices[i]; - str += (i > 1 ? sep : " ") + (atomIndex >= 0 ? "{atomIndex=" + countPlusIndices[i] + "}" - : Escape.escape(getAtom(i))); + str += (i > 1 ? sep : " ") + (atomIndex < 0 ? Escape.escape(getAtom(i)) + : asScript ? "{atomIndex=" + countPlusIndices[i] + "}" + : viewer.getAtomInfo(atomIndex)); } return str; } @@ -345,7 +347,7 @@ public Vector toVector() { Vector V = new Vector(); - for (int i = 0; i < count + 1; i++ ) + for (int i = 1; i <= count; i++ ) V.addElement(getLabel(i, false)); V.addElement(strMeasurement); return V; @@ -382,7 +384,7 @@ int atomIndex = countPlusIndices[i]; return (atomIndex < 0 ? Escape.escape(getAtom(i)) : asBitSet ? "({" + atomIndex + "})" - : modelSet.atoms[atomIndex].getInfo()); + : viewer.getAtomInfo(atomIndex)); } } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-21 13:51:38 UTC (rev 9621) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-21 14:21:43 UTC (rev 9622) @@ -3,6 +3,7 @@ version=11.5.49 +# bug fix: extra values in measure reporting, and wrong format # bug fix: 11.5.48 is broken for scripts with array definitions such as # p = array(); p[pt] = .... # code: simplification/unification of statement length checking AFTER allowing for variable substitution Modified: trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java 2008-07-21 13:51:38 UTC (rev 9621) +++ trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java 2008-07-21 14:21:43 UTC (rev 9622) @@ -213,7 +213,7 @@ if (col == 0) return viewer.getMeasurementStringValue(row); int[] countPlusIndices = viewer.getMeasurementCountPlusIndices(row); - if (col >= countPlusIndices.length) + if (col > countPlusIndices[0]) return null; int atomIndex = countPlusIndices[col]; return (viewer.getAtomInfo(atomIndex >= 0 ? atomIndex : -row * 10 - col)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gu...@us...> - 2008-07-23 16:24:58
|
Revision: 9630 http://jmol.svn.sourceforge.net/jmol/?rev=9630&view=rev Author: gutow Date: 2008-07-23 16:24:55 +0000 (Wed, 23 Jul 2008) Log Message: ----------- # bug fix: was reading server path for local path from history in Webexport Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-23 07:27:54 UTC (rev 9629) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-23 16:24:55 UTC (rev 9630) @@ -3,6 +3,7 @@ version=11.5.50_dev +# bug fix: was reading server path for local path from history in Webexport # bug fix: $ptx[2] notation broken in 11.5.49 # code: various cleaning/simplifying # code: way cleaner quaternion derivative calculation code Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-07-23 07:27:54 UTC (rev 9629) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-07-23 16:24:55 UTC (rev 9630) @@ -63,7 +63,7 @@ historyFile = hFile; remoteAppletPath = historyFile.getProperty("webMakerAppletPath", ".."); - localAppletPath = historyFile.getProperty("webMakerAppletPath", ".."); + localAppletPath = historyFile.getProperty("webMakerLocalAppletPath", ".."); pageAuthorName = historyFile.getProperty("webMakerPageAuthorName", "Jmol Web Export"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gu...@us...> - 2008-07-24 19:01:31
|
Revision: 9641 http://jmol.svn.sourceforge.net/jmol/?rev=9641&view=rev Author: gutow Date: 2008-07-24 19:01:27 +0000 (Thu, 24 Jul 2008) Log Message: ----------- # new feature: webexport now cleans up scratch files on deletion of instances and program exit. Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/Jmol.java trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-23 21:18:20 UTC (rev 9640) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-24 19:01:27 UTC (rev 9641) @@ -3,6 +3,7 @@ version=11.5.51_dev +# new feature: webexport now cleans up scratch files on deletion of instances and program exit. # ----------------------------------------------------------------------------- #version=11.5.50 Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-07-23 21:18:20 UTC (rev 9640) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-07-24 19:01:27 UTC (rev 9641) @@ -832,8 +832,10 @@ private void dispose(JFrame f) { if (historyFile != null && scriptWindow != null) historyFile.addWindowInfo(SCRIPT_WINDOW_NAME, scriptWindow, null); - if (historyFile != null && webExport != null) + if (historyFile != null && webExport != null){ WebExport.saveHistory(); + WebExport.cleanUp(); + } if (numWindows <= 1) { // Close Jmol report(GT._("Closing Jmol...")); Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java 2008-07-23 21:18:20 UTC (rev 9640) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java 2008-07-24 19:01:27 UTC (rev 9641) @@ -72,7 +72,6 @@ } boolean movepict(String dirpath) throws IOException { - //need the file writing stuff... String imagename = dirpath + "/" + this.javaname + ".png"; if (this.pictFile.equals(imagename)) return false; @@ -118,4 +117,18 @@ */ return true; } + boolean delete() throws IOException { + File scratchtoerase = new File(this.pictFile); + boolean scratchexists = scratchtoerase.exists(); + if (scratchexists){ + boolean deleteOK = scratchtoerase.delete(); + if (!(deleteOK)) { + IOException IOe = (new IOException("Failed to delete scratch file " + + this.pictFile + ".")); + throw IOe; + } + //delete any other scratch files we create with an instance. + } + return true; + } } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-07-23 21:18:20 UTC (rev 9640) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-07-24 19:01:27 UTC (rev 9641) @@ -24,9 +24,12 @@ */ package org.openscience.jmol.app.webexport; +import java.awt.*; +import java.awt.event.*; import java.awt.BorderLayout; import java.awt.Dimension; import java.io.BufferedReader; +import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -36,11 +39,12 @@ import java.util.Date; import java.util.Properties; import javax.swing.*; +import javax.swing.filechooser.FileSystemView; import org.jmol.api.JmolViewer; import org.openscience.jmol.app.HistoryFile; -public class WebExport extends JPanel { +public class WebExport extends JPanel implements WindowListener { private static boolean showMoleculesAndOrbitals = false; //not implemented @@ -140,6 +144,7 @@ //Uncomment the following line to use scrolling tabs. //tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); + } @@ -159,6 +164,7 @@ * this method should be invoked from the * event-dispatching thread. */ + public static WebExport createAndShowGUI(JmolViewer viewer, HistoryFile historyFile, String wName) { @@ -187,7 +193,9 @@ webExport = new WebExport(viewer, historyFile); webExport.setOpaque(true); //content panes must be opaque webFrame.setContentPane(webExport); + webFrame.addWindowListener(webExport); + //Display the window. webFrame.pack(); webFrame.setVisible(true); @@ -287,4 +295,54 @@ // + str.length() + " bytes)"); return str; } + + /* Window event code for cleanup*/ + public void windowClosing(WindowEvent e) { } + +public void windowClosed(WindowEvent e) { + //cleanUp(); Should do this, but then states during a session loose their .png files if window is closed. +} + +public void windowOpened(WindowEvent e) { + } + +public void windowIconified(WindowEvent e) { +} + +public void windowDeiconified(WindowEvent e) { +} + +public void windowActivated(WindowEvent e) { +} + +public void windowDeactivated(WindowEvent e) { +} + +public void windowGainedFocus(WindowEvent e) { +} + +public void windowLostFocus(WindowEvent e) { +} + +public void windowStateChanged(WindowEvent e) { +} + +public static void cleanUp(){ + //gets rid of scratch files. + FileSystemView Directories = FileSystemView.getFileSystemView(); + File homedir = Directories.getHomeDirectory(); + String homedirpath = homedir.getPath(); + String scratchpath = homedirpath + "/.jmol_WPM"; + File scratchdir = new File(scratchpath); + if (scratchdir.exists()) { + File[] dirListing = null; + dirListing = scratchdir.listFiles(); + for (int i = 0; i < (dirListing.length);i++){ + dirListing[i].delete(); + } + } + saveHistory();//force save of history. + System.gc();//force garbage collection. + } +} Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-07-23 21:18:20 UTC (rev 9640) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-07-24 19:01:27 UTC (rev 9641) @@ -296,13 +296,13 @@ public void actionPerformed(ActionEvent e) { - if (e.getSource() == remoteAppletPath) { + if (e.getSource() == remoteAppletPath) {//apparently no events are fired to reach this, maybe "enter" does it String path = remoteAppletPath.getText(); WebExport.setAppletPath(path, true); return; } - if (e.getSource() == localAppletPath) { + if (e.getSource() == localAppletPath) {//apparently no events are fired to reach this, maybe "enter" does it String path = localAppletPath.getText(); WebExport.setAppletPath(path, false); return; @@ -361,8 +361,15 @@ //find out which are selected and remove them. int[] todelete = instanceList.getSelectedIndices(); int nDeleted = 0; - for (int i = 0; i < todelete.length; i++) + for (int i = 0; i < todelete.length; i++){ + JmolInstance instance = (JmolInstance) listModel.get(todelete[i]); + try { + instance.delete(); + } catch (IOException err) { + LogPanel.log(err.getMessage()); + } listModel.remove(todelete[i] - nDeleted++); + } syncLists(); return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-25 13:38:29
|
Revision: 9645 http://jmol.svn.sourceforge.net/jmol/?rev=9645&view=rev Author: hansonr Date: 2008-07-25 13:38:22 +0000 (Fri, 25 Jul 2008) Log Message: ----------- version=11.5.51_dev # new feature: PRELIMINARY aniso_beta for cif files -- has not been checked for correct Ortep type -- set to 0 for now # new feature: application select button reinstated # new feature: application pick button reinstated # new feature: application measure button tied to picking style # new feature: application [>|] button # bug fix: ramachandran/quaternion "reset" not decoupled from model decouple # code: model orientation saved with model. # bug fix: set axesOrientationRasmol finally correctly implemented # new feature: axes labels change subtly for set axesMolecular and setAxesOrientationRasmol # bug fix: JmolViewer interface deprecated "rotateTo..." methods changed to "rotate..." # because that's what they really do. # bug fix: set defaults jmol/rasmol must do reset(). Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/CifReader.java trunk/Jmol/src/org/jmol/shape/Measures.java trunk/Jmol/src/org/jmol/symmetry/UnitCell.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/MouseManager.java trunk/Jmol/src/org/jmol/viewer/PickingManager.java trunk/Jmol/src/org/jmol/viewer/RepaintManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java trunk/Jmol/src/org/openscience/jmol/app/Jmol.java trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/CifReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/CifReader.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/adapter/readers/cifpdb/CifReader.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -482,7 +482,13 @@ final private static byte ANISO_B12 = 37; final private static byte ANISO_B13 = 38; final private static byte ANISO_B23 = 39; - final private static byte ADP_TYPE = 40; + final private static byte ANISO_Beta_11 = 40; + final private static byte ANISO_Beta_22 = 41; + final private static byte ANISO_Beta_33 = 42; + final private static byte ANISO_Beta_12 = 43; + final private static byte ANISO_Beta_13 = 44; + final private static byte ANISO_Beta_23 = 45; + final private static byte ADP_TYPE = 46; final private static String[] atomFields = { "_atom_site_type_symbol", @@ -525,6 +531,12 @@ "_atom_site_aniso_B_12", "_atom_site_aniso_B_13", "_atom_site_aniso_B_23", + "_atom_site_aniso_Beta_11", + "_atom_site_aniso_Beta_22", + "_atom_site_aniso_Beta_33", + "_atom_site_aniso_Beta_12", + "_atom_site_aniso_Beta_13", + "_atom_site_aniso_Beta_23", "_atom_site_adp_type", }; @@ -689,7 +701,7 @@ atom.anisoBorU = new float[8]; int iType = (propertyOf[i] - ANISO_U11) % 6; atom.anisoBorU[iType] = parseFloat(field); - atom.anisoBorU[6] = 8; // D = 2pi^2, C = 2, a*b* + atom.anisoBorU[6] = 8; // Ortep type 8: D = 2pi^2, C = 2, a*b* break; case ANISO_B11: case ANISO_B22: @@ -703,6 +715,19 @@ atom.anisoBorU[iTypeB] = parseFloat(field); atom.anisoBorU[6] = 4; // Ortep Type 4: D = 1/4, C = 2, a*b* break; + case ANISO_Beta_11: + case ANISO_Beta_22: + case ANISO_Beta_33: + case ANISO_Beta_12: + case ANISO_Beta_13: + case ANISO_Beta_23: + if (atom.anisoBorU == null) + atom.anisoBorU = new float[8]; + int iTypeBeta = (propertyOf[i] - ANISO_Beta_11) % 6; + atom.anisoBorU[iTypeBeta] = parseFloat(field); + atom.anisoBorU[6] = 0; // NOT VERIFIED! Ortep Type 0: D = 1, c = 2 + System.out.println("ANISO_Beta NOT VERIFIED -- TESTING ONLY"); + break; } } if (Float.isNaN(atom.x) || Float.isNaN(atom.y) || Float.isNaN(atom.z)) { Modified: trunk/Jmol/src/org/jmol/shape/Measures.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Measures.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/shape/Measures.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -247,6 +247,7 @@ measurementCount = 0; for (int i = countT; --i >= 0; ) measurements[i] = null; + viewer.setStatusMeasuring("measureDeleted", -1, "all"); } private int findMeasurement(int[] indices, Point3fi[] points) { Modified: trunk/Jmol/src/org/jmol/symmetry/UnitCell.java =================================================================== --- trunk/Jmol/src/org/jmol/symmetry/UnitCell.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/symmetry/UnitCell.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -226,7 +226,7 @@ * http://ndbserver.rutgers.edu/mmcif/dictionaries/html/cif_mm.dic/Items/_atom_site.aniso_u[1][2].html * - * Ortep: + * Ortep: http://www.ornl.gov/sci/ortep/man_pdf.html * Anisotropic temperature factor Types 0, 1, 2, 3, and 10 use the following formula for the complete temperature factor. @@ -247,10 +247,10 @@ The coefficients Uij (i,j = 1,2,3) of the various types are defined with the following constant settings. -Type 4: C = 2, D = 1?4 -Type 5: C = 1, D = 1?4 -Type 8: C = 2, D = 2p2 -Type 9: C = 1, D = 2p2 +Type 4: C = 2, D = 1/4 +Type 5: C = 1, D = 1/4 +Type 8: C = 2, D = 2pi2 +Type 9: C = 1, D = 2pi2 */ @@ -269,7 +269,8 @@ : ortepType == 2 || ortepType == 3 ? Math.log(2) : 1 ); // types 6 and 7 not supported - + + 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); @@ -296,6 +297,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]); Vector3f unitVectors[] = new Vector3f[3]; for (int i = 0; i < 3; i++) unitVectors[i] = new Vector3f(); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-25 13:38:22 UTC (rev 9645) @@ -2,7 +2,10 @@ # add it on line starting with # below the "version=..." line version=11.5.51_dev - +# new feature: PRELIMINARY aniso_beta for cif files -- has not been checked for correct Ortep type -- set to 0 for now +# new feature: application select button reinstated +# new feature: application pick button reinstated +# new feature: application measure button tied to picking style # new feature: application [>|] button # bug fix: ramachandran/quaternion "reset" not decoupled from model decouple # code: model orientation saved with model. Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -248,17 +248,18 @@ public final static int PICKING_SELECT_MOLECULE = 11; public final static int PICKING_SELECT_SITE = 12; public final static int PICKING_SELECT_ELEMENT = 13; - public final static int PICKING_MEASURE = 14; - public final static int PICKING_MEASURE_DISTANCE = 15; - public final static int PICKING_MEASURE_ANGLE = 16; - public final static int PICKING_MEASURE_TORSION = 17; - public final static int PICKING_NAVIGATE = 18; + public static final int PICKING_SELECT_DRAG = 14; + public final static int PICKING_MEASURE = 15; + public final static int PICKING_MEASURE_DISTANCE = 16; + public final static int PICKING_MEASURE_ANGLE = 17; + public final static int PICKING_MEASURE_TORSION = 18; + public final static int PICKING_NAVIGATE = 19; private final static String[] pickingModeNames = { "off", "identify", "label", "center", "draw", "spin", "coord NOT IMPLEMENTED", "bond NOT IMPLEMENTED", "atom", "group", "chain", "molecule", "site", "element", - "measure", "distance", "angle", "torsion", "navigate" + "drag", "measure", "distance", "angle", "torsion", "navigate" }; public final static String getPickingModeName(int pickingMode) { @@ -279,11 +280,12 @@ public final static int PICKINGSTYLE_SELECT_CHIME = 0; public final static int PICKINGSTYLE_SELECT_RASMOL = 1; public final static int PICKINGSTYLE_SELECT_PFAAT = 2; - public final static int PICKINGSTYLE_MEASURE_ON = 3; - public final static int PICKINGSTYLE_MEASURE_OFF = 4; + public final static int PICKINGSTYLE_SELECT_DRAG = 3; + public final static int PICKINGSTYLE_MEASURE_ON = 4; + public final static int PICKINGSTYLE_MEASURE_OFF = 5; private final static String[] pickingStyleNames = { - "toggle", "selectOrToggle", "extendedSelect", + "toggle", "selectOrToggle", "extendedSelect", "drag", "measure", "measureoff" }; @@ -2839,6 +2841,7 @@ public final static int STEREO_REDGREEN = 4; public final static int STEREO_CUSTOM = 5; + // all of these things are compile-time constants // if they are false then the compiler should take them away static { Modified: trunk/Jmol/src/org/jmol/viewer/MouseManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -50,7 +50,7 @@ boolean hoverActive = false; - boolean rubberbandSelectionMode = false; + private boolean rubberbandSelectionMode = false; int xAnchor, yAnchor; final static Rectangle rectRubber = new Rectangle(); @@ -144,12 +144,12 @@ } Rectangle getRubberBand() { - if (!rubberbandSelectionMode) + if (!rubberbandSelectionMode || rectRubber.x == Integer.MAX_VALUE) return null; return rectRubber; } - void calcRectRubberBand() { + private void calcRectRubberBand() { if (xCurrent < xAnchor) { rectRubber.x = xCurrent; rectRubber.width = xAnchor - xCurrent; @@ -250,8 +250,8 @@ } hoverOff(); - previousPressedX = previousDragX = xCurrent = x; - previousPressedY = previousDragY = yCurrent = y; + xAnchor = previousPressedX = previousDragX = xCurrent = x; + yAnchor = previousPressedY = previousDragY = yCurrent = y; previousPressedModifiers = modifiers; previousPressedTime = timeCurrent = time; @@ -298,6 +298,12 @@ yCurrent = y; viewer.setInMotion(false); viewer.setCursor(Viewer.CURSOR_DEFAULT); + if (rubberbandSelectionMode && ((modifiers & BUTTON_MODIFIER_MASK) == SHIFT_LEFT)) { + viewer.selectRectangle(rectRubber, modifiers); + viewer.refresh(0, "mouseReleased"); + } + rubberbandSelectionMode = false; + rectRubber.x = Integer.MAX_VALUE; } int previousClickX, previousClickY; @@ -333,6 +339,7 @@ void setMouseMode() { drawMode = false; + rubberbandSelectionMode = (viewer.getPickingStyle() == JmolConstants.PICKINGSTYLE_SELECT_DRAG); measuresEnabled = true; switch (viewer.getPickingMode()) { default: @@ -434,7 +441,7 @@ timeCurrent = time; xCurrent = previousDragX = x; yCurrent = previousDragY = y; - + switch (pressedCount) { case 2: //viewer.setStatusUserAction("mouseDoublePressDrag: " + modifiers); @@ -444,11 +451,11 @@ case MIDDLE: checkMotion(); viewer.translateXYBy(deltaX, deltaY); - break; + return; case CTRL_SHIFT_LEFT: if (viewer.getSlabEnabled()) viewer.depthByPixels(deltaY); - break; + return; } return; case 1: @@ -456,37 +463,43 @@ case LEFT: checkMotion(); viewer.rotateXYBy(deltaX, deltaY); - break; + return; case ALT_LEFT: if (viewer.allowRotateSelected()) { checkMotion(); viewer.rotateMolecule(deltaX, deltaY); - break; + return; } case SHIFT_LEFT: case ALT_SHIFT_LEFT: if (drawMode) { checkMotion(); - viewer.checkObjectDragged(previousDragX, previousDragY, deltaX, deltaY, - modifiers); - break; + viewer.checkObjectDragged(previousDragX, previousDragY, deltaX, + deltaY, modifiers); + return; + } else if (rubberbandSelectionMode) { + calcRectRubberBand(); + viewer.refresh(0,"mouse-drag selection"); + return; } case MIDDLE: // if (deltaY < 0 && deltaX > deltaY || deltaY > 0 && deltaX < deltaY) if (Math.abs(deltaY) > 5 * Math.abs(deltaX)) checkMotion(); - viewer.zoomBy(deltaY); + viewer.zoomBy(deltaY); // if (deltaX < 0 && deltaY > deltaX || deltaX > 0 && deltaY < deltaX) if (Math.abs(deltaX) > 5 * Math.abs(deltaY)) checkMotion(); - viewer.rotateZBy(-deltaX); - break; + viewer.rotateZBy(-deltaX); + return; case SHIFT_RIGHT: // the one-button Mac folks won't get this gesture checkMotion(); - viewer.rotateZBy((Math.abs(deltaY) > 5 * Math.abs(deltaX) - ? (xCurrent < viewer.getScreenWidth() / 2 ? deltaY : -deltaY) : 0) + viewer + .rotateZBy((Math.abs(deltaY) > 5 * Math.abs(deltaX) ? (xCurrent < viewer + .getScreenWidth() / 2 ? deltaY : -deltaY) + : 0) + (yCurrent > viewer.getScreenHeight() / 2 ? deltaX : -deltaX)); - break; + return; case CTRL_ALT_LEFT: /* * miguel 2004 11 23 @@ -499,16 +512,16 @@ case CTRL_RIGHT: checkMotion(); viewer.translateXYBy(deltaX, deltaY); - break; + return; case CTRL_SHIFT_LEFT: if (viewer.getSlabEnabled()) viewer.slabByPixels(deltaY); - break; + return; case CTRL_ALT_SHIFT_LEFT: if (viewer.getSlabEnabled()) viewer.slabDepthByPixels(deltaY); + return; } - return; } } Modified: trunk/Jmol/src/org/jmol/viewer/PickingManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/PickingManager.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/viewer/PickingManager.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -23,10 +23,12 @@ */ package org.jmol.viewer; +import java.util.BitSet; + import javax.vecmath.Point3f; +import org.jmol.util.BitSetUtil; import org.jmol.util.Escape; -import org.jmol.util.Logger; import org.jmol.i18n.GT; import org.jmol.modelset.MeasurementPending; @@ -36,7 +38,7 @@ private Viewer viewer; private int pickingMode = JmolConstants.PICKING_IDENT; - private int pickingStyleSelect = JmolConstants.PICKINGSTYLE_SELECT_CHIME; + private int pickingStyleSelect = JmolConstants.PICKINGSTYLE_SELECT_JMOL; private int pickingStyleMeasure = JmolConstants.PICKINGSTYLE_MEASURE_OFF; private boolean drawHover; @@ -69,11 +71,6 @@ void setPickingStyle(int pickingStyle) { this.pickingStyle = pickingStyle; - if (Logger.debugging) { - Logger.debug( - " setPickingStyle " + pickingStyle+": " + - JmolConstants.getPickingStyleName(pickingStyle)); - } if (pickingStyle >= JmolConstants.PICKINGSTYLE_MEASURE_ON) { pickingStyleMeasure = pickingStyle; resetMeasurement(); @@ -94,6 +91,46 @@ return drawHover; } + void atomsPicked(BitSet bs, int modifiers) { + if (BitSetUtil.firstSetBit(bs) < 0) + return; + pickSelected(Escape.escape(bs), modifiers); + } + + private void pickSelected(String spec, int modifiers) { + boolean shiftKey = ((modifiers & MouseManager.SHIFT) != 0); + boolean alternateKey = ((modifiers & MouseManager.ALT) != 0); + switch (pickingMode) { + case JmolConstants.PICKING_LABEL: + viewer.script("set labeltoggle " + spec); + return; + case JmolConstants.PICKING_IDENT: + case JmolConstants.PICKING_SELECT_ATOM: + applyMouseStyle(spec, shiftKey, alternateKey); + viewer.clearClickCount(); + return; + case JmolConstants.PICKING_SELECT_GROUP: + applyMouseStyle("within(group, " + spec +")", shiftKey, alternateKey); + viewer.clearClickCount(); + return; + case JmolConstants.PICKING_SELECT_CHAIN: + applyMouseStyle("within(chain, " + spec +")", shiftKey, alternateKey); + viewer.clearClickCount(); + return; + case JmolConstants.PICKING_SELECT_MOLECULE: + applyMouseStyle("visible and within(molecule, " + spec +")", shiftKey, alternateKey); + viewer.clearClickCount(); + return; + case JmolConstants.PICKING_SELECT_SITE: + applyMouseStyle("visible and within(site, " + spec +")", shiftKey, alternateKey); + viewer.clearClickCount(); + return; + case JmolConstants.PICKING_SELECT_ELEMENT: + applyMouseStyle("visible and within(element, " + spec +")", shiftKey, alternateKey); + viewer.clearClickCount(); + return; + } + } void atomPicked(int atomIndex, Point3f ptClicked, int modifiers) { // atomIndex < 0 is possible here. boolean shiftKey = ((modifiers & MouseManager.SHIFT) != 0); @@ -184,31 +221,8 @@ case JmolConstants.PICKING_LABEL: viewer.script("set labeltoggle {atomindex="+atomIndex+"}"); return; - case JmolConstants.PICKING_SELECT_ATOM: - applyMouseStyle("atomIndex="+atomIndex, shiftKey, alternateKey); - viewer.clearClickCount(); - return; - case JmolConstants.PICKING_SELECT_GROUP: - applyMouseStyle("within(group, atomIndex=" + atomIndex+")", shiftKey, alternateKey); - viewer.clearClickCount(); - return; - case JmolConstants.PICKING_SELECT_CHAIN: - applyMouseStyle("within(chain, atomIndex=" + atomIndex+")", shiftKey, alternateKey); - viewer.clearClickCount(); - return; - case JmolConstants.PICKING_SELECT_MOLECULE: - applyMouseStyle("visible and within(molecule, atomIndex=" + atomIndex+")", shiftKey, alternateKey); - viewer.clearClickCount(); - return; - case JmolConstants.PICKING_SELECT_SITE: - applyMouseStyle("visible and within(site, atomIndex=" + atomIndex+")", shiftKey, alternateKey); - viewer.clearClickCount(); - return; - case JmolConstants.PICKING_SELECT_ELEMENT: - applyMouseStyle("visible and within(element, atomIndex=" + atomIndex+")", shiftKey, alternateKey); - viewer.clearClickCount(); - return; } + pickSelected("atomindex=" + atomIndex, modifiers); } private int queueAtom(int atomIndex, Point3f ptClicked) { @@ -221,7 +235,8 @@ private void applyMouseStyle(String item, boolean shiftKey, boolean alternateKey) { item = "(" + item + ")"; - if (pickingStyleSelect == JmolConstants.PICKINGSTYLE_SELECT_PFAAT) { + if (pickingStyleSelect == JmolConstants.PICKINGSTYLE_SELECT_PFAAT + || pickingStyleSelect == JmolConstants.PICKINGSTYLE_SELECT_DRAG) { if (shiftKey && alternateKey) viewer.script("select selected and not " + item); else if (shiftKey) @@ -231,10 +246,11 @@ else viewer.script("select " + item); } else { - if (shiftKey | pickingStyleSelect == JmolConstants.PICKINGSTYLE_SELECT_CHIME) + if (shiftKey || pickingStyleSelect == JmolConstants.PICKINGSTYLE_SELECT_JMOL) viewer.script("select selected tog " + item); //toggle else viewer.script("select " + item); } - } + } + } Modified: trunk/Jmol/src/org/jmol/viewer/RepaintManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/RepaintManager.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/viewer/RepaintManager.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -58,31 +58,31 @@ modelIndex = -1; String ids = null; boolean isSameSource = false; - if (currentModelIndex == modelIndex) - return; - if (modelCount > 0) { - boolean fromDataFrame = viewer.isJmolDataFrame(currentModelIndex); - //System.out.println("from state " + currentModelIndex + " to "+ modelIndex); - if (fromDataFrame) - viewer.setJmolDataFrame(null, -1, currentModelIndex); - if (currentModelIndex != -1) - viewer.saveModelOrientation(); - if (fromDataFrame || viewer.isJmolDataFrame(modelIndex)) { - ids = viewer.getJmolFrameType(modelIndex) + viewer.getJmolFrameType(currentModelIndex); - isSameSource = (viewer.getJmolDataSourceFrame(modelIndex) == viewer - .getJmolDataSourceFrame(currentModelIndex)); + if (currentModelIndex != modelIndex) { + if (modelCount > 0) { + boolean fromDataFrame = viewer.isJmolDataFrame(currentModelIndex); + //System.out.println("from state " + currentModelIndex + " to "+ modelIndex); + if (fromDataFrame) + viewer.setJmolDataFrame(null, -1, currentModelIndex); + if (currentModelIndex != -1) + viewer.saveModelOrientation(); + if (fromDataFrame || viewer.isJmolDataFrame(modelIndex)) { + ids = viewer.getJmolFrameType(modelIndex) + viewer.getJmolFrameType(currentModelIndex); + isSameSource = (viewer.getJmolDataSourceFrame(modelIndex) == viewer + .getJmolDataSourceFrame(currentModelIndex)); + } } + currentModelIndex = modelIndex; + if (ids != null) { + viewer.restoreModelOrientation(modelIndex); + if (isSameSource && ids.indexOf("quaternion") >= 0 + && ids.indexOf("ramachandran") < 0) + viewer.restoreModelRotation(formerModelIndex); + } } - currentModelIndex = modelIndex; - if (ids != null) { - viewer.restoreModelOrientation(modelIndex); - if (isSameSource && ids.indexOf("quaternion") >= 0 - && ids.indexOf("ramachandran") < 0) - viewer.restoreModelRotation(formerModelIndex); - } viewer.setTrajectory(currentModelIndex); if (currentModelIndex == -1 && clearBackgroundModel) - setBackgroundModelIndex(-1); + setBackgroundModelIndex(-1); viewer.setTainted(true); setFrameRangeVisible(); if (modelSet != null) Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -1496,6 +1496,7 @@ return mouseManager.getRubberBand(); } + public int getCursorX() { return mouseManager.xCurrent; } @@ -2338,6 +2339,13 @@ return modelSet.findAtomsInRectangle(rectRubberBand); } + void selectRectangle(Rectangle rectRubber, int modifiers) { + BitSet bs = findAtomsInRectangle(rectRubber); + if (BitSetUtil.firstSetBit(bs) < 0) + return; + pickingManager.atomsPicked(bs, modifiers); + } + void toCartesian(Point3f pt) { int modelIndex = repaintManager.currentModelIndex; if (modelIndex < 0) @@ -3867,6 +3875,10 @@ JmolConstants.getPickingStyleName(pickingManager.getPickingStyle())); } + int getPickingStyle() { + return pickingManager.getPickingStyle(); + } + void setDrawHover(boolean TF) { pickingManager.setDrawHover(TF); } Modified: trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -153,9 +153,9 @@ private HomeAction homeAction = new HomeAction(); private DefineCenterAction defineCenterAction = new DefineCenterAction(); - private Action deleteAction = new SetStatusAction("delete", GT._("Delete Atoms")); - private Action pickAction = new SetStatusAction("pick", GT._("Select Atoms")); - private Action rotateAction = new SetStatusAction("rotate", null); + private Action deleteAction = new SetStatusAction("delete", GT._("Delete atoms")); + private Action pickAction = new EvalStringQuietAction("pick", "if ({*}=={selected});select none;endif;selectionHalos on;set pickingstyle drag;set picking select atom"); + private Action rotateAction = new EvalStringQuietAction("rotate", "selectionHalos off;set pickingstyle toggle;set picking identify"); private Action zoomAction = new SetStatusAction("zoom", null); private Action xlateAction = new SetStatusAction("xlate", null); private Action frontAction = new MoveToAction("front", "moveto 2.0 front"); Modified: trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -140,7 +140,7 @@ labels.put("definecenter", GT._("Define Center")); labels.put("tools", GT._("&Tools")); labels.put("viewMeasurementTable", GT._("Measurements...")); - labels.put("viewMeasurementTableTip", GT._("View measurement table.")); + labels.put("viewMeasurementTableTip", GT._("Click atoms to measure distances")); labels.put("distanceUnitsMenu", GT._("Distance Units")); labels.put("distanceNanometersScript", GT._("Nanometers 1E-9")); labels.put("distanceAngstromsScript", GT._("Angstroms 1E-10")); @@ -183,7 +183,7 @@ labels.put("Prefs.isLabelAtomColor", GT._("Use Atom Color")); labels.put("Prefs.isBondAtomColor", GT._("Use Atom Color")); labels.put("rotateTip", GT._("Rotate molecule.")); - labels.put("pickTip", GT._("Select an atom or region.")); + labels.put("pickTip", GT._("Select a set of atoms using SHIFT-LEFT- DRAG.")); labels.put("homeTip", GT._("Return molecule to home position.")); return labels; Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -1673,6 +1673,7 @@ } public void actionPerformed(ActionEvent e) { + viewer.script("set picking measure distance;set pickingstyle measure"); measurementTable.activate(); } } @@ -1743,7 +1744,8 @@ (String) data[4]); break; case JmolConstants.CALLBACK_ANIMFRAME: - notifyFrameChanged(((int[]) data[1])[0]); + int[] iData = (int[]) data[1]; + notifyFrameChanged(iData[0], iData[1], iData[2]); break; case JmolConstants.CALLBACK_ECHO: sendConsoleEcho(strInfo); @@ -1833,7 +1835,7 @@ // JOptionPane.ERROR_MESSAGE); return; } - if (!haveDisplay.booleanValue()) + if (display == null) return; // jmolpopup.updateComputedMenus(); String title = "Jmol"; @@ -1854,7 +1856,7 @@ pcs.firePropertyChange(chemFileProperty, null, null); } - private void notifyFrameChanged(int frameNo) { + private void notifyFrameChanged(int frameNo, int file, int model) { // Note: twos-complement. To get actual frame number, use // Math.max(frameNo, -2 - frameNo) // -1 means all frames are now displayed @@ -1872,7 +1874,9 @@ //int animationDirection = (firstNo < 0 ? -1 : 1); //int currentDirection = (lastNo < 0 ? -1 : 1); //System.out.println("notifyFrameChange " + frameNo + " " + fileNo + " " + modelNo + " " + firstNo + " " + lastNo + " " + animationDirection + " " + currentDirection); - + + if (display != null) + display.status.setStatus(1, file + "." + model); if (jmolpopup == null || isAnimationRunning) return; jmolpopup.updateComputedMenus(); Modified: trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java 2008-07-24 23:48:54 UTC (rev 9644) +++ trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java 2008-07-25 13:38:22 UTC (rev 9645) @@ -210,8 +210,10 @@ return stringClass; } public Object getValueAt(int row, int col) { - if (col == 0) + if (col == 0) { + deleteAllButton.setEnabled(true); return viewer.getMeasurementStringValue(row); + } int[] countPlusIndices = viewer.getMeasurementCountPlusIndices(row); if (col > countPlusIndices[0]) return null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gu...@us...> - 2008-07-30 06:03:36
|
Revision: 9655 http://jmol.svn.sourceforge.net/jmol/?rev=9655&view=rev Author: gutow Date: 2008-07-30 06:03:33 +0000 (Wed, 30 Jul 2008) Log Message: ----------- new feature: webexport now compresses data files over 512MB Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-30 03:06:09 UTC (rev 9654) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-30 06:03:33 UTC (rev 9655) @@ -3,6 +3,7 @@ version=11.5.52_dev +# new feature: webexport now compresses data files over 512 MB # new feature: calculate pointGroup -- preliminary only -- untested # ----------------------------------------------------------------------------- Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-07-30 03:06:09 UTC (rev 9654) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-07-30 06:03:33 UTC (rev 9655) @@ -33,6 +33,8 @@ import java.awt.event.ActionEvent; import java.net.URL; import java.util.ArrayList; +import java.util.zip.GZIPOutputStream; + import javax.swing.*; import org.jmol.api.JmolViewer; @@ -466,12 +468,14 @@ if (localAppletPath.getText().equals(".") || remoteAppletPath.getText().equals(".")) fileList += "Jmol.js\nJmolApplet.jar"; - String[] filesToCopy = TextFormat.split(fileList,'\n'); - - String filesCopied = ""; - for (int iFile = 0; iFile < filesToCopy.length; iFile++) - filesCopied = copyBinaryFile(filesToCopy[iFile], datadirPath, filesCopied); - script = localizeFileReferences(script, filesToCopy); + String[] filesToCopy = fileList.split("\n"); + String[] copiedFileNames = new String[filesToCopy.length]; + for (int iFile = 0; iFile < filesToCopy.length; iFile++){ + if(filesToCopy[iFile].contains("|")) + filesToCopy[iFile]=filesToCopy[iFile].substring(0,filesToCopy[iFile].indexOf("|")); + copiedFileNames[iFile] = copyBinaryFile(filesToCopy[iFile], datadirPath); + } + script = localizeFileReferences(script, filesToCopy, copiedFileNames); LogPanel.log(" ...adding " + javaname + ".spt"); writeFile(datadirPath + "/" + javaname + ".spt", script); } @@ -523,27 +527,29 @@ return fileList; } - private static String copyBinaryFile(String fullPathName, String dataPath, String filesCopied) { + private static String copyBinaryFile(String fullPathName, String dataPath) { String name = fullPathName.substring(fullPathName.lastIndexOf('/') + 1); - int i; - String s; - if ((i = name.indexOf("|")) >= 0) - name = name.substring(0, i); - if (filesCopied.indexOf((s = ";" + name + ";")) >= 0) - return filesCopied; - filesCopied += s; name = dataPath + "/" + name; + String gzname = name.concat(".gz"); + File outFile = new File(name); + File gzoutFile = new File(gzname); + if (outFile.exists()) + return name; + if (gzoutFile.exists()) + return gzname; try { - LogPanel.log(" ...copying " + fullPathName + " to " + name); + LogPanel.log(" ...copying\n" + fullPathName + "\n to"); byte[] data = getFileAsBytes(fullPathName); if (data == null) - LogPanel.log("Could not find or open " + fullPathName); - else - writeFileBytes(name, data); + LogPanel.log("Could not find or open:\n" + fullPathName); + else { + name = writeFileBytes(name, data); + LogPanel.log(name); + } } catch (Exception e) { LogPanel.log(e.getMessage()); } - return filesCopied; + return name; } private static byte[] getFileAsBytes(String path) throws IOException { @@ -568,23 +574,34 @@ return buf; } - private static void writeFileBytes(String path, byte[] data) { + private static String writeFileBytes(String path, byte[] data) { try { - FileOutputStream os = new FileOutputStream(path); - os.write(data); - os.flush(); - os.close(); + if (data.length>=524288 && !path.endsWith("JmolApplet.jar") ){ //gzip it + path = path.concat(".gz"); + GZIPOutputStream gzFile = new GZIPOutputStream(new FileOutputStream(path)); + gzFile.write(data); + LogPanel.log(" ...Compressing large data file to\n"); + gzFile.flush(); + gzFile.close(); + } else { + FileOutputStream os = new FileOutputStream(path); + os.write(data); + os.flush(); + os.close(); + } } catch (IOException e) { LogPanel.log(e.getMessage()); } + return path; } - private static String localizeFileReferences(String script, String[] fileList) { - for (int i = 0; i < fileList.length; i++) { - String fullPathName = fileList[i]; - String name = fullPathName.substring(fullPathName.lastIndexOf('/') + 1); + private static String localizeFileReferences(String script, String[] origFileList, String [] copiedFileNames) { + for (int i = 0; i < origFileList.length; i++) { + String fullPathName = origFileList[i]; + String fullCopiedName = copiedFileNames[i]; + String name = fullCopiedName.substring(fullCopiedName.lastIndexOf('/') + 1); if (!name.equals(fullPathName)) - script = TextFormat.simpleReplace(script, "\"" + fullPathName + "\"", "\"" + name + "\""); + script = TextFormat.simpleReplace(script, fullPathName,name); } return script; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-07 03:09:45
|
Revision: 9688 http://jmol.svn.sourceforge.net/jmol/?rev=9688&view=rev Author: hansonr Date: 2008-08-07 03:09:39 +0000 (Thu, 07 Aug 2008) Log Message: ----------- version=11.6.RC2_dev console/menu # bug fix: workaround for Java 1.6.0_10 diallowing popup menu # new feature: in Java 1.6.0_10, right-click activates the console, and the # console has a menubar menu item "Jmol" that is the pop-up menu. # new feature: applet console has "help" menu item, which includes several hundred items. Modified Paths: -------------- trunk/Jmol/src/org/jmol/applet/Console.java trunk/Jmol/src/org/jmol/applet/Jmol.java trunk/Jmol/src/org/jmol/applet/Jvm12.java trunk/Jmol/src/org/jmol/popup/JmolPopup.java trunk/Jmol/src/org/jmol/popup/JmolPopupAwt.java trunk/Jmol/src/org/jmol/popup/JmolPopupSwing.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/PropertyManager.java trunk/Jmol/src/org/jmol/viewer/Token.java trunk/Jmol/src/org/jmol/viewer/Viewer.java trunk/Jmol/src/org/openscience/jmol/app/Jmol.java Modified: trunk/Jmol/src/org/jmol/applet/Console.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Console.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/applet/Console.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -27,6 +27,7 @@ import org.jmol.i18n.*; import java.awt.*; import java.awt.event.*; + import javax.swing.*; import javax.swing.text.*; @@ -58,11 +59,15 @@ //} private final Jvm12 jvm12; + private JMenuBar menubar; // requiring Swing here for now + public Object getMyMenuBar() { + return menubar; + } + Console(Component componentParent, JmolViewer viewer, Jvm12 jvm12) { this.viewer = viewer; this.jvm12 = jvm12; - Logger.debug("Console constructor"); //System.out.println("Console " + this + " constructed"); @@ -75,13 +80,16 @@ JScrollPane jscrollOutput = new JScrollPane(output); jscrollOutput.setMinimumSize(new Dimension(2, 100)); Container c = jf.getContentPane(); + menubar = createMenubar(); + jf.setJMenuBar(menubar); + c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); + JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jscrollOutput, jscrollInput); jsp.setResizeWeight(.9); jsp.setDividerLocation(200); - c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); jsp.setAlignmentX(Component.CENTER_ALIGNMENT); c.add(jsp); @@ -114,9 +122,169 @@ jf.addWindowListener(this); } + protected JMenuBar createMenubar() { + JMenuBar mb = new JMenuBar(); + //addNormalMenuBar(mb); + mb.add(Box.createHorizontalGlue()); + addHelpMenuBar(mb); + return mb; + } + + protected void addHelpMenuBar(JMenuBar menuBar) { + String menuKey = "help"; + JMenu m0 = createMenu(menuKey); + if (m0 == null) + return; + addHelpItems(m0, "commands", "command"); + addHelpItems(m0, "math functions", "mathfunc"); + addHelpItems(m0, "set parameters", "setparam"); + addHelpItems(m0, "more", "misc"); + menuBar.add(m0); + } + + + private void addHelpItems(JMenu m0, String label, String attr) { + + String[] commands = (String[]) viewer.getProperty(null, "tokenList", attr); + JMenu m = new JMenu(label); + m0.add(m); + JMenu m2 = null; + String firstCommand = null; + int n = 20; + for (int i = 0; i < commands.length; i++) { + String cmd = commands[i]; + if (!Character.isLetter(cmd.charAt(0))) + continue; + JMenuItem item = new JMenuItem(cmd); + item.addActionListener(this); + item.setName("help " + cmd); + if (m2 == null) { + m2 = new JMenu(); + firstCommand = cmd; + m2.add(item); + m2.setText(firstCommand); + continue; + } + if ((i % n) + 1 == n) { + m2.add(item); + m2.setText(firstCommand + " - " + cmd); + m.add(m2); + m2 = null; + continue; + } + m2.add(item); + if (i + 1 == commands.length && m2 != null) { + m2.setText(firstCommand + " - " + cmd); + m.add(m2); + } + } + } + + JMenu newJMenu(String key) { + String label = "Help"; + return new KeyJMenu(key, getLabelWithoutMnemonic(label), getMnemonic(label)); + } + + class KeyJMenu extends JMenu { + String key; + KeyJMenu(String key, String label, char mnemonic) { + super(label); + if (mnemonic != ' ') { + setMnemonic(mnemonic); + } + this.key = key; + //map.put(key, this); + } + public String getKey() { + return key; + } + } + + + private char getMnemonic(String label) { + return 'h'; + } + + private String getLabelWithoutMnemonic(String label) { + return label; + } + + protected JMenu createMenu(String key) { + + // Get list of items from resource file: +// String[] itemKeys = new tokenize(JmolResourceHandler.getStringX(key)); + + // Get label associated with this menu: + JMenu menu = newJMenu(key); + /* + ImageIcon f = JmolResourceHandler.getIconX(key + "Image"); + if (f != null) { + menu.setHorizontalTextPosition(SwingConstants.RIGHT); + menu.setIcon(f); + } + + // Loop over the items in this menu: + for (int i = 0; i < itemKeys.length; i++) { + + String item = itemKeys[i]; + if (item.equals("-")) { + menu.addSeparator(); + continue; + } + if (item.endsWith("Menu")) { + JMenu pm; + if ("recentFilesMenu".equals(item)) { + recentFilesMenu = pm = createMenu(item); + } else { + pm = createMenu(item); + } + menu.add(pm); + continue; + } + JMenuItem mi = createMenuItem(item); + menu.add(mi); + } +*/ + + //menu.addMenuListener(display.getMenuListener()); + + JMenuItem mi = createMenuItem("Help"); + menu.add(mi); + + return menu; + } + + protected JMenuItem createMenuItem(String cmd) { + + JMenuItem mi; + mi = newJMenuItem(cmd); + return mi; + } + + JMenuItem newJMenuItem(String key) { + String label = "Help"; + return new KeyJMenuItem(key, getLabelWithoutMnemonic(label), getMnemonic(label)); + } + + class KeyJMenuItem extends JMenuItem { + String key; + KeyJMenuItem(String key, String label, char mnemonic) { + super(label); + if (mnemonic != ' ') { + setMnemonic(mnemonic); + } + this.key = key; + //map.put(key, this); + } + public String getKey() { + return key; + } + } + private void setupInput() { input.setLineWrap(true); input.setWrapStyleWord(true); + //input.setText("Input a command in the box below or select a menu item from above."); Keymap map = input.getKeymap(); // KeyStroke shiftCR = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, @@ -162,7 +330,7 @@ public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == runButton) { - execute(); + execute(null); } if (source == clearInButton) { input.setText(""); @@ -179,16 +347,20 @@ if (source == loadButton) { viewer.loadInline(input.getText(), false); } + if (source instanceof JMenuItem) { + execute(((JMenuItem) source).getName()); + } } - void execute() { - String strCommand = input.getText(); - input.setText(null); - //output(strCommand, attributesCommand); - String strErrorMessage = viewer.script(strCommand); + void execute(String strCommand) { + String cmd = (strCommand == null ? input.getText() : strCommand); + if (strCommand == null) + input.setText(null); + String strErrorMessage = viewer.script(cmd); if (strErrorMessage != null && !strErrorMessage.equals("pending")) output(strErrorMessage); - input.requestFocus(); + if (strCommand == null) + input.requestFocus(); } class ControlEnterTextArea extends JTextArea { @@ -196,7 +368,7 @@ switch (ke.getID()) { case KeyEvent.KEY_PRESSED: if (ke.getKeyCode() == KeyEvent.VK_ENTER && !ke.isControlDown()) { - execute(); + execute(null); return; } if (ke.getKeyCode() == KeyEvent.VK_UP) { Modified: trunk/Jmol/src/org/jmol/applet/Jmol.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -165,6 +165,8 @@ boolean hasProgressBar; + boolean popupMenuAllowed = true; + int paintCounter; /* @@ -184,7 +186,7 @@ String language; String menuStructure; - + public void init() { htmlName = getParameter("name"); syncId = getParameter("syncId"); @@ -199,14 +201,14 @@ } language = GT.getLanguage(); System.out.println("language=" + language); - doTranslate = getBooleanValue("doTranslate", true); + doTranslate = getBooleanValue("doTranslate", true); if ("none".equals(language)) doTranslate = false; if (!doTranslate) { GT.setDoTranslate(false); Logger.warn("Note -- language translation disabled"); } - + String ms = getParameter("mayscript"); mayScript = (ms != null) && (!ms.equalsIgnoreCase("false")); JmolAppletRegistry.checkIn(fullName, appletWrapper); @@ -366,14 +368,27 @@ hasProgressBar = getBooleanValue("progressbar", false); // should the popupMenu be loaded ? needPopupMenu = getBooleanValue("popupMenu", true); - if (needPopupMenu) - jmolpopup = JmolPopup.newJmolPopup(viewer, doTranslate, menuStructure); + if (needPopupMenu) { + // Java 1.6.0_10 disallows popup menus via this security issue. + SecurityManager security = System.getSecurityManager(); + try { + if (security != null) { + security.checkPermission(new java.awt.AWTPermission( + "setWindowAlwaysOnTop")); + } + } catch (Exception e) { + popupMenuAllowed = false; + System.out.println("popup menu not available"); + } + getPopupMenu(false); + } //if (needPopupMenu) - //loadPopupMenuAsBackgroundTask(); + //loadPopupMenuAsBackgroundTask(); String emulate = getValueLowerCase("emulate", "jmol"); setStringProperty("defaults", emulate.equals("chime") ? "RasMol" : "Jmol"); - setStringProperty("backgroundColor", getValue("bgcolor", getValue("boxbgcolor", "black"))); + setStringProperty("backgroundColor", getValue("bgcolor", getValue( + "boxbgcolor", "black"))); loadNodeId(getValue("loadNodeId", null)); @@ -388,28 +403,28 @@ boolean haveCallback = false; //these are set by viewer.setStringProperty() from setValue for (int i = 0; i < JmolConstants.CALLBACK_COUNT && !haveCallback; i++) - haveCallback = (callbacks[i] != null); + haveCallback = (callbacks[i] != null); if (haveCallback || statusForm != null || statusText != null) { if (!mayScript) Logger .warn("MAYSCRIPT missing -- all applet JavaScript calls disabled"); } - if (callbacks[JmolConstants.CALLBACK_MESSAGE] != null + if (callbacks[JmolConstants.CALLBACK_MESSAGE] != null || statusForm != null || statusText != null) { if ((getValue("doTranslate", null) == null)) { doTranslate = false; Logger - .warn("Note -- Presence of message callback will disable translation;" + - " to enable message translation" + - " use jmolSetTranslation(true) prior to jmolApplet()"); + .warn("Note -- Presence of message callback will disable translation;" + + " to enable message translation" + + " use jmolSetTranslation(true) prior to jmolApplet()"); } if (doTranslate) Logger - .warn("Note -- Automatic language translation may affect parsing of callback" + - " messages; to disable language translation of callback messages," + - " use jmolSetTranslation(false) prior to jmolApplet()"); + .warn("Note -- Automatic language translation may affect parsing of callback" + + " messages; to disable language translation of callback messages," + + " use jmolSetTranslation(false) prior to jmolApplet()"); } - + statusForm = getValue("StatusForm", null); statusText = getValue("StatusText", null); //text statusTextarea = getValue("StatusTextarea", null); //textarea @@ -422,10 +437,9 @@ Logger.info("applet textarea status will be reported to document." + statusForm + "." + statusTextarea); } - + String loadParam; String scriptParam = getValue("script", ""); - System.out.println(scriptParam); if ((loadParam = getValue("loadInline", null)) != null) { loadInlineSeparated(loadParam, (scriptParam.length() > 0 ? scriptParam : null)); @@ -861,9 +875,9 @@ loadDOMNode(tryNode); } } - +/* void loadPopupMenuAsBackgroundTask() { - // no popup on MacOS 9 NetScape + // no popup on MacOS 9 NetScape if (viewer.getOperatingSystemName().equals("Mac OS") && viewer.getJavaVersion().equals("1.1.5")) return; @@ -882,10 +896,10 @@ // long beginTime = System.currentTimeMillis(); // Logger.debug("LoadPopupThread starting "); // this is a background task - jmolpopup = JmolPopup.newJmolPopup(viewer, doTranslate, menuStructure); + getPopupMenu(); } } - +*/ class MyStatusListener implements JmolStatusListener { public boolean notifyEnabled(int type) { @@ -1073,14 +1087,14 @@ if (callbackName.equalsIgnoreCase("menu")) { menuStructure = callbackFunction; if (needPopupMenu) - jmolpopup = JmolPopup.newJmolPopup(viewer, doTranslate, menuStructure); + getPopupMenu(false); return; } if (callbackName.equalsIgnoreCase("language")) { new GT(callbackFunction); language = GT.getLanguage(); if (needPopupMenu) - jmolpopup = JmolPopup.newJmolPopup(viewer, doTranslate, menuStructure); + getPopupMenu(true); return; } for (int i = 0; i < JmolConstants.CALLBACK_COUNT; i++) @@ -1191,10 +1205,14 @@ } public void handlePopupMenu(int x, int y) { + if (!popupMenuAllowed) { + showConsole(true); + return; + } if (jmolpopup == null) return; if (!language.equals(GT.getLanguage())) { - jmolpopup = JmolPopup.newJmolPopup(viewer, doTranslate, menuStructure); + getPopupMenu(true); language = GT.getLanguage(); } jmolpopup.show(x, y); @@ -1254,4 +1272,16 @@ } } + + public void getPopupMenu(boolean forceNewConsole) { + jmolpopup = JmolPopup.newJmolPopup(viewer, doTranslate, menuStructure, popupMenuAllowed); + if (jmolpopup != null && jvm12 != null && !popupMenuAllowed) { + if (forceNewConsole) { + jvm12.showConsole(false); + } + if (jvm12.console == null) + jvm12.getConsole(); + jmolpopup.installMainMenu(jvm12.console.getMyMenuBar()); + } + } } Modified: trunk/Jmol/src/org/jmol/applet/Jvm12.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -56,10 +56,18 @@ } return; } + getConsole(); + if (console != null) + console.setVisible(true); + } + + void consoleMessage(String message) { + if (console != null) + console.output(message); + } + + Console getConsole() { if (console == null) { - if (Logger.debugging) { - Logger.debug("Jvm12.showConsole(" + showConsole + ")"); - } try { console = new Console(awtComponent, viewer, this); } catch (Exception e) { @@ -72,12 +80,6 @@ } catch (Exception e) { } } - if (console != null) - console.setVisible(true); + return console; } - - void consoleMessage(String message) { - if (console != null) - console.output(message); - } } Modified: trunk/Jmol/src/org/jmol/popup/JmolPopup.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/JmolPopup.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/popup/JmolPopup.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -56,6 +56,7 @@ Component jmolComponent; MenuItemListener mil; CheckboxMenuItemListener cmil; + boolean asPopup = true; Hashtable htMenus = new Hashtable(); Properties menuText = new Properties(); @@ -95,22 +96,23 @@ static String menuStructure; - JmolPopup(JmolViewer viewer) { + JmolPopup(JmolViewer viewer, boolean asPopup) { this.viewer = viewer; + this.asPopup = asPopup; jmolComponent = viewer.getAwtComponent(); mil = new MenuItemListener(); cmil = new CheckboxMenuItemListener(); //System.out.println("JmolPopup " + this + " constructor"); } - static public JmolPopup newJmolPopup(JmolViewer viewer, boolean doTranslate, String menu) { + static public JmolPopup newJmolPopup(JmolViewer viewer, boolean doTranslate, String menu, boolean asPopup) { menuStructure = menu; GT.setDoTranslate(true); JmolPopup popup; try { popup = (!viewer.isJvm12orGreater() || forceAwt ? (JmolPopup) new JmolPopupAwt( - viewer) - : (JmolPopup) new JmolPopupSwing(viewer)); + viewer, asPopup) + : (JmolPopup) new JmolPopupSwing(viewer, asPopup)); } catch (Exception e) { Logger.error("JmolPopup not loaded"); return null; @@ -127,6 +129,8 @@ return popup; } + public abstract void installMainMenu(Object objMenuBar); + void build(Object popupMenu) { htMenus.put("popupMenu", popupMenu); addMenuItems("", "popupMenu", popupMenu, new PopupResourceBundle(menuStructure, menuText), viewer @@ -866,7 +870,8 @@ } } restorePopupMenu(); - showPopupMenu(thisx, thisy); + if (asPopup) + showPopupMenu(thisx, thisy); } Object[][] frankList = new Object[10][]; //enough to cover menu drilling Modified: trunk/Jmol/src/org/jmol/popup/JmolPopupAwt.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/JmolPopupAwt.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/popup/JmolPopupAwt.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -38,20 +38,29 @@ public class JmolPopupAwt extends JmolPopup { PopupMenu awtPopup; + Menu mainMenu; Menu elementComputedMenu; static int MENUITEM_HEIGHT = 20; - public JmolPopupAwt(JmolViewer viewer) { - super(viewer); - awtPopup = new PopupMenu("Jmol"); - jmolComponent.add(awtPopup); - build(awtPopup); + public JmolPopupAwt(JmolViewer viewer, boolean asPopup) { + super(viewer, asPopup); + if (asPopup) { + mainMenu = awtPopup = new PopupMenu("Jmol"); + jmolComponent.add(awtPopup); + } else { + mainMenu = new Menu("Jmol"); + } + build(mainMenu); } void showPopupMenu(int x, int y) { awtPopup.show(jmolComponent, x, y); } + public void installMainMenu(Object objMenuBar) { + // not needed for AWT system. + } + Object getParent(Object menu) { return ((Menu)menu).getParent(); } Modified: trunk/Jmol/src/org/jmol/popup/JmolPopupSwing.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/JmolPopupSwing.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/popup/JmolPopupSwing.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -27,6 +27,7 @@ import org.jmol.util.Logger; import javax.swing.JComponent; +import javax.swing.JMenuBar; import javax.swing.JPopupMenu; import javax.swing.JMenu; import javax.swing.JMenuItem; @@ -38,13 +39,20 @@ JPopupMenu swingPopup; JMenu elementComputedMenu; + JMenu mainMenu; - static int MENUITEM_HEIGHT = 20; - public JmolPopupSwing(JmolViewer viewer) { - super(viewer); - swingPopup = new JPopupMenu("Jmol"); - build(swingPopup); + static int MENUITEM_HEIGHT = 20; + + public JmolPopupSwing(JmolViewer viewer, boolean asPopup) { + super(viewer, asPopup); + if (asPopup) { + swingPopup = new JPopupMenu("Jmol"); + build(swingPopup); + } else { + mainMenu = new JMenu("Jmol"); + build(mainMenu); + } } void showPopupMenu(int x, int y) { @@ -53,14 +61,24 @@ try { swingPopup.show(jmolComponent, x, y); } catch (Exception e) { - // probably a permissions problem in Java 7 + System.out.println("popup error: " + e.getMessage()); + // browser in Java 1.6.0_10 is blocking setting WindowAlwaysOnTop + } } + public void installMainMenu(Object objMenuBar) { + if (objMenuBar instanceof JMenuBar) { + JMenuBar mb = (JMenuBar) objMenuBar; + mb.remove(0); + mb.add(mainMenu, 0); + } + } + Object getParent(Object menu) { - return ((JMenu)menu).getParent(); + return ((JMenu) menu).getParent(); } - + int getMenuItemHeight() { return MENUITEM_HEIGHT; } @@ -81,20 +99,20 @@ void insertMenuSubMenu(Object menu, Object subMenu, int index) { if (menu instanceof JPopupMenu) - ((JPopupMenu)menu).insert((JMenu)subMenu, index); + ((JPopupMenu) menu).insert((JMenu) subMenu, index); else - ((JMenu)menu).insert((JMenu)subMenu, index); + ((JMenu) menu).insert((JMenu) subMenu, index); } - + void createFrankPopup() { frankPopup = new JPopupMenu("Frank"); } - + void showFrankMenu(int x, int y) { if (jmolComponent == null) return; try { - ((JPopupMenu)frankPopup).show(jmolComponent, x, y); + ((JPopupMenu) frankPopup).show(jmolComponent, x, y); } catch (Exception e) { // probably a permissions problem in Java 7 } @@ -107,9 +125,9 @@ void addToMenu(Object menu, JComponent item) { if (menu instanceof JPopupMenu) { - ((JPopupMenu)menu).add(item); + ((JPopupMenu) menu).add(item); } else if (menu instanceof JMenu) { - ((JMenu)menu).add(item); + ((JMenu) menu).add(item); } else { Logger.warn("cannot add object to menu: " + menu); } @@ -119,16 +137,16 @@ void addMenuSeparator(Object menu) { if (menu instanceof JPopupMenu) - ((JPopupMenu)menu).addSeparator(); + ((JPopupMenu) menu).addSeparator(); else - ((JMenu)menu).addSeparator(); + ((JMenu) menu).addSeparator(); } Object addMenuItem(Object menu, String entry, String script, String id) { JMenuItem jmi = new JMenuItem(entry); updateMenuItem(jmi, entry, script); jmi.addActionListener(mil); - jmi.setName(id == null ? ((Component)menu).getName() + ".": id); + jmi.setName(id == null ? ((Component) menu).getName() + "." : id); addToMenu(menu, jmi); return jmi; } @@ -139,11 +157,11 @@ else ((JMenu) menu).setLabel(entry); } - + String getId(Object menu) { return ((Component) menu).getName(); } - + void setCheckBoxValue(Object source) { JCheckBoxMenuItem jcmi = (JCheckBoxMenuItem) source; setCheckBoxValue(jcmi.getActionCommand(), jcmi.getState()); @@ -152,29 +170,30 @@ void setCheckBoxState(Object item, boolean state) { ((JCheckBoxMenuItem) item).setState(state); } - + void updateMenuItem(Object menuItem, String entry, String script) { - JMenuItem jmi = (JMenuItem)menuItem; + JMenuItem jmi = (JMenuItem) menuItem; jmi.setLabel(entry); jmi.setActionCommand(script); } - Object addCheckboxMenuItem(Object menu, String entry, String basename, String id, boolean state) { + Object addCheckboxMenuItem(Object menu, String entry, String basename, + String id, boolean state) { JCheckBoxMenuItem jcmi = new JCheckBoxMenuItem(entry); jcmi.setState(state); jcmi.addItemListener(cmil); jcmi.setActionCommand(basename); - jcmi.setName(id == null ? ((Component)menu).getName() + "." : id); + jcmi.setName(id == null ? ((Component) menu).getName() + "." : id); addToMenu(menu, jcmi); return jcmi; } Object cloneMenu(Object menu) { - return null; + return null; } - + void addMenuSubMenu(Object menu, Object subMenu) { - addToMenu(menu, (JMenu)subMenu); + addToMenu(menu, (JMenu) subMenu); } Object newMenu(String menuName, String id) { @@ -185,11 +204,11 @@ } void setAutoscrolls(Object menu) { - ((JMenu) menu).setAutoscrolls(true); + ((JMenu) menu).setAutoscrolls(true); } - + void renameMenu(Object menu, String newMenuName) { - ((JMenu)menu).setLabel(newMenuName); + ((JMenu) menu).setLabel(newMenuName); } Object newComputedMenu(String key, String word) { @@ -201,15 +220,15 @@ } int getMenuItemCount(Object menu) { - return ((JMenu)menu).getItemCount(); + return ((JMenu) menu).getItemCount(); } void removeMenuItem(Object menu, int index) { - ((JMenu)menu).remove(index); + ((JMenu) menu).remove(index); } void removeAll(Object menu) { - ((JMenu)menu).removeAll(); + ((JMenu) menu).removeAll(); } void enableMenu(Object menu, boolean enable) { @@ -217,19 +236,17 @@ enableMenuItem(menu, enable); return; } - try{ - ((JMenu)menu).setEnabled(enable); - } - catch(Exception e) { + try { + ((JMenu) menu).setEnabled(enable); + } catch (Exception e) { //no menu item; } } void enableMenuItem(Object item, boolean enable) { - try{ - ((JMenuItem)item).setEnabled(enable); - } - catch(Exception e) { + try { + ((JMenuItem) item).setEnabled(enable); + } catch (Exception e) { //no menu item; } } @@ -244,14 +261,17 @@ String getMenuCurrent() { StringBuffer sb = new StringBuffer(); - JPopupMenu main = (JPopupMenu) htMenus.get("popupMenu"); - getMenuCurrent(sb, 0, main, "PopupMenu"); + Object menu = htMenus.get("popupMenu"); + getMenuCurrent(sb, 0, menu, "PopupMenu"); return sb.toString(); } - private static void getMenuCurrent(StringBuffer sb, int level, JPopupMenu menu, String menuName) { + private static void getMenuCurrent(StringBuffer sb, int level, + Object menu, String menuName) { String name = menuName; - Component[] subMenus = ((JPopupMenu) menu).getComponents(); + Component[] subMenus = + (menu instanceof JPopupMenu ? ((JPopupMenu) menu).getComponents() + : ((JMenu) menu).getPopupMenu().getComponents()); for (int i = 0; i < subMenus.length; i++) { Object m = subMenus[i]; String flags; @@ -264,10 +284,11 @@ } else if (m instanceof JMenuItem) { JMenuItem jmi = (JMenuItem) m; flags = "enabled:" + jmi.isEnabled(); - if (m instanceof JCheckBoxMenuItem) - flags += ";checked:" + ((JCheckBoxMenuItem)m).getState(); + if (m instanceof JCheckBoxMenuItem) + flags += ";checked:" + ((JCheckBoxMenuItem) m).getState(); String script = fixScript(jmi.getName(), jmi.getActionCommand()); - addCurrentItem(sb, 'I', level, jmi.getName(), jmi.getText(), script, flags); + addCurrentItem(sb, 'I', level, jmi.getName(), jmi.getText(), script, + flags); } else { addCurrentItem(sb, 'S', level, name, null, null, null); } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-07 03:09:39 UTC (rev 9688) @@ -3,6 +3,11 @@ version=11.6.RC2_dev +# bug fix: workaround for Java 1.6.0_10 diallowing popup menu +# new feature: in Java 1.6.0_10, right-click activates the console, and the +# console has a menubar menu item "Jmol" that is the pop-up menu. +# new feature: applet console has "help" menu item, which includes several hundred items. + # ----------------------------------------------------------------------------- #version=11.6.RC1 Modified: trunk/Jmol/src/org/jmol/viewer/PropertyManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/PropertyManager.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/viewer/PropertyManager.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -292,6 +292,9 @@ private static Object getPropertyAsObject(Viewer viewer, String infoType, Object paramInfo) { //Logger.debug("getPropertyAsObject(\"" + infoType+"\", \"" + paramInfo + "\")"); + if (infoType.equals("tokenList")) { + return Token.getTokensLike((String) paramInfo); + } int id = getPropertyNumber(infoType); boolean iHaveParameter = (paramInfo != null && paramInfo.toString() .length() > 0); Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -24,9 +24,11 @@ package org.jmol.viewer; +import java.util.Arrays; import java.util.Enumeration; import java.util.Hashtable; import java.util.BitSet; +import java.util.Vector; import javax.vecmath.Point3f; import javax.vecmath.Point4f; @@ -169,7 +171,7 @@ return ((tokCommand >> 9) & 0x7); } - final static int command = (1 << 12); + final public static int command = (1 << 12); // the command assumes an atom expression as the first parameter // -- center, define, delete, display, hide, restrict, select, subset, zap @@ -1557,6 +1559,26 @@ } return cmds; } + + static String[] getTokensLike(String type) { + int attr = (type.equals("setparam") ? setparam + : type.equals("misc") ? misc + : type.equals("mathfunc") ? mathfunc : command); + Vector v = new Vector(); + Enumeration e = map.keys(); + while (e.hasMoreElements()) { + String name = (String) e.nextElement(); + Token token = (Token) map.get(name); + if (Compiler.tokAttr(token.tok, attr)) + v.add(name); + } + String[] a = new String[v.size()]; + for (int i = 0; i < a.length; i++) + a[i] = (String) v.get(i); + Arrays.sort(a); + return a; + } + /* public static String getSetParameters() { String cmds = ""; Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -6845,6 +6845,6 @@ // Got to do something? } return image; - } + } Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-08-06 20:36:01 UTC (rev 9687) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-08-07 03:09:39 UTC (rev 9688) @@ -309,7 +309,7 @@ if (menuFile != null) { menuStructure = viewer.getFileAsString(menuFile); } - jmolpopup = JmolPopup.newJmolPopup(viewer, true, menuStructure); + jmolpopup = JmolPopup.newJmolPopup(viewer, true, menuStructure, true); } @@ -1899,7 +1899,7 @@ public void handlePopupMenu(int x, int y) { if (!language.equals(GT.getLanguage())) { - jmolpopup = JmolPopup.newJmolPopup(viewer, true, menuStructure); + jmolpopup = JmolPopup.newJmolPopup(viewer, true, menuStructure, true); language = GT.getLanguage(); } jmolpopup.show(x, y); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gu...@us...> - 2008-08-12 18:26:11
|
Revision: 9710 http://jmol.svn.sourceforge.net/jmol/?rev=9710&view=rev Author: gutow Date: 2008-08-12 18:26:04 +0000 (Tue, 12 Aug 2008) Log Message: ----------- Addition of translation tags (GT._) to the webexport package Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java trunk/Jmol/src/org/openscience/jmol/app/webexport/LogPanel.java trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-12 17:04:48 UTC (rev 9709) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-12 18:26:04 UTC (rev 9710) @@ -3,6 +3,7 @@ version=11.6.RC5_dev +# Addition of translation tags to webexport # bug fix: write IMAGE broken for 11.6.RC2+ # bug fix: unnecessary refreshes removed from moveto/zoom with time 0 # new feature: background IMAGE "filename" Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java 2008-08-12 17:04:48 UTC (rev 9709) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java 2008-08-12 18:26:04 UTC (rev 9710) @@ -32,6 +32,7 @@ import javax.swing.filechooser.FileSystemView; import org.jmol.api.JmolViewer; +import org.jmol.i18n.GT; import org.jmol.util.TextFormat; class JmolInstance { @@ -62,7 +63,7 @@ if (!(scratchfile.exists())) {//make the directory if necessary. we will delete when done boolean made_scratchdir = scratchfile.mkdir(); if (!(made_scratchdir)) { - LogPanel.log("Attempt to make scratch directory failed."); + LogPanel.log(GT._("Attempt to make scratch directory failed.")); } } String pictfile = scratchpath + "/" + javaname + ".png"; @@ -123,7 +124,7 @@ if (scratchexists){ boolean deleteOK = scratchtoerase.delete(); if (!(deleteOK)) { - IOException IOe = (new IOException("Failed to delete scratch file " + IOException IOe = (new IOException(GT._("Failed to delete scratch file ") + this.pictFile + ".")); throw IOe; } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/LogPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/LogPanel.java 2008-08-12 17:04:48 UTC (rev 9709) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/LogPanel.java 2008-08-12 18:26:04 UTC (rev 9710) @@ -28,6 +28,8 @@ import javax.swing.*; +import org.jmol.i18n.GT; + class LogPanel { private static JTextArea logArea; @@ -47,7 +49,7 @@ //Create a panel of the log and its label JPanel logPanel = new JPanel(); logPanel.setLayout(new BorderLayout()); - logPanel.setBorder(BorderFactory.createTitledBorder("Log and Error Messages:")); + logPanel.setBorder(BorderFactory.createTitledBorder(GT._("Log and Error Messages:"))); logPanel.add(logScrollPane); return logPanel; } @@ -55,7 +57,7 @@ static JPanel getMiniPanel() { JPanel miniPanel = new JPanel(); miniPanel.setLayout(new BorderLayout()); - miniPanel.setBorder(BorderFactory.createTitledBorder("Messages (see Log tab for full history):")); + miniPanel.setBorder(BorderFactory.createTitledBorder(GT._("Messages (see Log tab for full history):"))); miniLogArea = new JTextArea(2,20); miniLogArea.setEditable(false); JScrollPane miniScrollPane = new JScrollPane(miniLogArea); Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java 2008-08-12 17:04:48 UTC (rev 9709) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java 2008-08-12 18:26:04 UTC (rev 9710) @@ -27,6 +27,7 @@ import javax.swing.*; import org.jmol.api.JmolViewer; +import org.jmol.i18n.GT; import org.jmol.util.TextFormat; class PopInJmol extends WebPanel { @@ -35,8 +36,8 @@ int panelIndex) { super(viewer, fc, webPanels, panelIndex); //description = "Create a web page with images that convert to live Jmol applets when a user clicks a link"; - listLabel = "These names will be used as filenames for the applets"; - infoFile = "pop_in_instructions.html"; + listLabel = GT._("These names will be used as filenames for the applets"); + infoFile = GT._("pop_in_instructions.html"); templateName = "pop_in_template.html"; appletTemplateName = "pop_in_template2.html"; templateImage = "pop_in.png"; @@ -58,9 +59,9 @@ //panel to hold spinner and label JPanel appletSizeWHPanel = new JPanel(); - appletSizeWHPanel.add(new JLabel("Applet width:")); + appletSizeWHPanel.add(new JLabel(GT._("Applet width:"))); appletSizeWHPanel.add(appletSizeSpinnerW); - appletSizeWHPanel.add(new JLabel("height:")); + appletSizeWHPanel.add(new JLabel(GT._("height:"))); appletSizeWHPanel.add(appletSizeSpinnerH); return (appletSizeWHPanel); } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java 2008-08-12 17:04:48 UTC (rev 9709) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java 2008-08-12 18:26:04 UTC (rev 9710) @@ -27,6 +27,7 @@ import javax.swing.*; import org.jmol.api.JmolViewer; +import org.jmol.i18n.GT; import org.jmol.util.TextFormat; class ScriptButtons extends WebPanel { @@ -35,8 +36,8 @@ int panelIndex) { super(viewer, fc, webPanels, panelIndex); //description = "Create a web page containing a text and button pane that scrolls next to a resizable Jmol applet"; - listLabel = "These names will be used for button labels"; - infoFile = "script_button_instructions.html"; + listLabel = GT._("These names will be used for button labels"); + infoFile = GT._("script_button_instructions.html"); templateName = "script_button_template.html"; appletTemplateName = "script_button_template2.html"; templateImage = "script_button.png"; @@ -50,7 +51,7 @@ appletSizeSpinnerP = new JSpinner(appletSizeModel); //panel to hold spinner and label JPanel appletSizePPanel = new JPanel(); - appletSizePPanel.add(new JLabel("% of window for applet width:")); + appletSizePPanel.add(new JLabel(GT._("% of window for applet width:"))); appletSizePPanel.add(appletSizeSpinnerP); return (appletSizePPanel); } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-12 17:04:48 UTC (rev 9709) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-12 18:26:04 UTC (rev 9710) @@ -50,6 +50,7 @@ import javax.swing.filechooser.FileSystemView; import org.jmol.api.JmolViewer; +import org.jmol.i18n.GT; import org.openscience.jmol.app.HistoryFile; public class WebExport extends JPanel implements WindowListener { @@ -91,9 +92,9 @@ //Add tabs to the tabbed pane JPanel introPanel = new JPanel(); - URL url = getResource(this, "WebExportIntro.html"); + URL url = getResource(this, GT._("WebExportIntro.html")); if (url == null) { - System.err.println("Couldn't find file: WebExportIntro.html"); + System.err.println(GT._("Couldn't find file: WebExportIntro.html")); } JEditorPane intro = new JEditorPane(); if (url != null) { @@ -112,7 +113,7 @@ introPanel.setMaximumSize(new Dimension(450,350)); introPanel.setPreferredSize(new Dimension(400,300)); - mainTabs.add("Introduction",introPanel); + mainTabs.add(GT._("Introduction"),introPanel); webPanels[0] = new PopInJmol(viewer, fc, webPanels, 0); webPanels[1] = new ScriptButtons(viewer, fc, webPanels, 1); @@ -140,7 +141,7 @@ //The LogPanel should always be the last one - mainTabs.addTab("Log", LogPanel.getPanel()); + mainTabs.addTab(GT._("Log"), LogPanel.getPanel()); //Add the tabbed pane to this panel add(mainTabs); @@ -185,7 +186,7 @@ webFrame.toFront(); return webExport; } - webFrame = new JFrame("Jmol Web Page Maker"); + webFrame = new JFrame(GT._("Jmol Web Page Maker")); windowName = wName; historyFile.repositionWindow(windowName, webFrame, 700, 400); if (runStatus == STAND_ALONE) { Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-12 17:04:48 UTC (rev 9709) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-12 18:26:04 UTC (rev 9710) @@ -38,6 +38,7 @@ import javax.swing.*; import org.jmol.api.JmolViewer; +import org.jmol.i18n.GT; import org.jmol.util.ArrayUtil; import org.jmol.util.Parser; import org.jmol.util.TextFormat; @@ -99,7 +100,7 @@ pageAuthorName.setText(WebExport.getPageAuthorName()); webPageTitle = new JTextField(20); webPageTitle.addActionListener(this); - webPageTitle.setText("A web page containing Jmol applets"); + webPageTitle.setText(GT._("A web page containing Jmol applets")); } //Need the panel maker and the action listener. @@ -123,18 +124,18 @@ instanceSet.setLayout(new BorderLayout()); instanceSet.add(new JLabel(listLabel), BorderLayout.NORTH); instanceSet.add(instanceListView, BorderLayout.CENTER); - instanceSet.add(new JLabel("double-click and drag to reorder"), + instanceSet.add(new JLabel(GT._("double-click and drag to reorder")), BorderLayout.SOUTH); //Create the Instance add button. - addInstanceButton = new JButton("Add Present Jmol State as Instance..."); + addInstanceButton = new JButton(GT._("Add Present Jmol State as Instance...")); addInstanceButton.addActionListener(this); JPanel buttonPanel = new JPanel(); buttonPanel.setMaximumSize(new Dimension(350, 50)); - showInstanceButton = new JButton("Show Selected"); + showInstanceButton = new JButton(GT._("Show Selected")); showInstanceButton.addActionListener(this); - deleteInstanceButton = new JButton("Delete Selected"); + deleteInstanceButton = new JButton(GT._("Delete Selected")); deleteInstanceButton.addActionListener(this); buttonPanel.add(showInstanceButton); buttonPanel.add(deleteInstanceButton); @@ -165,7 +166,7 @@ rightPanel.setMaximumSize(new Dimension(350, 1000)); rightPanel.add(paramPanel, BorderLayout.NORTH); rightPanel.add(instancePanel, BorderLayout.CENTER); - rightPanel.setBorder(BorderFactory.createTitledBorder("Jmol Instances:")); + rightPanel.setBorder(BorderFactory.createTitledBorder(GT._("Jmol Instances:"))); //Create the overall panel JPanel panel = new JPanel(); @@ -185,25 +186,25 @@ private JPanel getLeftPanel(int w, int h) { - helpButton = new JButton("Help/Instructions"); + helpButton = new JButton(GT._("Help/Instructions")); helpButton.addActionListener(this); URL pageCartoon = WebExport.getResource(this, templateImage); ImageIcon pageImage = null; if (pageCartoon != null){ - pageImage = new ImageIcon(pageCartoon, "Cartoon of Page"); + pageImage = new ImageIcon(pageCartoon, GT._("Cartoon of Page")); } else { System.err.println("Error Loading Page Cartoon Image "+templateImage); } JLabel pageCartoonLabel = new JLabel(pageImage); JPanel pageCartoonPanel = new JPanel(); pageCartoonPanel.setLayout(new BorderLayout()); - pageCartoonPanel.setBorder(BorderFactory.createTitledBorder("Cartoon of Page:")); + pageCartoonPanel.setBorder(BorderFactory.createTitledBorder(GT._("Cartoon of Page:"))); pageCartoonPanel.add(pageCartoonLabel); // editorScrollPane = getInstructionPane(w, h); //Create the save button. - saveButton = new JButton("Save HTML as..."); + saveButton = new JButton(GT._("Save HTML as...")); saveButton.addActionListener(this); JPanel savePanel = new JPanel(); savePanel.add(saveButton); @@ -213,26 +214,26 @@ JPanel pathPanel = new JPanel(); pathPanel.setLayout(new BorderLayout()); pathPanel.setBorder(BorderFactory - .createTitledBorder("Relative server path to jar files:")); + .createTitledBorder(GT._("Relative server path to jar files:"))); pathPanel.add(remoteAppletPath, BorderLayout.NORTH); JPanel pathPanel2 = new JPanel(); pathPanel2.setLayout(new BorderLayout()); pathPanel2.setBorder(BorderFactory - .createTitledBorder("Relative local path to jar files:")); + .createTitledBorder(GT._("Relative local path to jar files:"))); pathPanel2.add(localAppletPath, BorderLayout.NORTH); //Page Author Panel JPanel authorPanel = new JPanel(); authorPanel.setBorder(BorderFactory - .createTitledBorder("Author (your name):")); + .createTitledBorder(GT._("Author (your name):"))); authorPanel.add(pageAuthorName, BorderLayout.NORTH); //Page Title Panel JPanel titlePanel = new JPanel(); titlePanel.setLayout(new BorderLayout()); titlePanel.setBorder(BorderFactory - .createTitledBorder("Browser window title for this web page:")); + .createTitledBorder(GT._("Browser window title for this web page:"))); titlePanel.add(webPageTitle, BorderLayout.NORTH); titlePanel.add(savePanel, BorderLayout.SOUTH); @@ -318,7 +319,7 @@ String label = (instanceList.getSelectedIndices().length != 1 ? "" : getInstanceName(-1)); String name = JOptionPane.showInputDialog( - "Give the occurance of Jmol a name:", label); + GT._("Give the occurance of Jmol a name:"), label); if (name == null) return; //need to get the script... @@ -348,10 +349,10 @@ if (i < 0) { i = listModel.getSize(); listModel.addElement(instance); - LogPanel.log("added Instance " + instance.name); + LogPanel.log(GT._("added Instance ") + instance.name); } else { listModel.setElementAt(instance, i); - LogPanel.log("updated Instance " + instance.name); + LogPanel.log(GT._("updated Instance ") + instance.name); } instanceList.setSelectedIndex(i); syncLists(); @@ -388,7 +389,7 @@ } if (e.getSource() == saveButton) { - fc.setDialogTitle("Select a directory to create or an HTML file to save"); + fc.setDialogTitle(GT._("Select a directory to create or an HTML file to save")); int returnVal = fc.showSaveDialog(this); if (returnVal != JFileChooser.APPROVE_OPTION) return; @@ -406,7 +407,7 @@ LogPanel.log(IOe.getMessage()); } if (!retVal) { - LogPanel.log("Call to FileWriter unsuccessful."); + LogPanel.log(GT._("Call to FileWriter unsuccessful.")); } } if (e.getSource() == helpButton){ @@ -444,8 +445,8 @@ DefaultListModel listModel = (DefaultListModel) InstanceList.getModel(); LogPanel.log(""); if (made_datadir) { - LogPanel.log("Using directory " + datadirPath); - LogPanel.log(" adding JmolPopIn.js"); + LogPanel.log(GT._("Using directory ") + datadirPath); + LogPanel.log(GT._(" adding JmolPopIn.js")); writeFile(datadirPath + "/JmolPopIn.js", getResourceString("JmolPopIn.js")); @@ -454,7 +455,7 @@ String javaname = thisInstance.javaname; String script = thisInstance.script; LogPanel.log(" ...jmolApplet" + i); - LogPanel.log(" ...adding " + javaname + ".png"); + LogPanel.log(GT._(" ...adding ") + javaname + ".png"); try { thisInstance.movepict(datadirPath); } catch (IOException IOe) { @@ -544,10 +545,10 @@ if (gzoutFile.exists()) return gzname; try { - LogPanel.log(" ...copying\n" + fullPathName + "\n to"); + LogPanel.log(GT._(" ...copying\n") + fullPathName + GT._("\n to")); byte[] data = getFileAsBytes(fullPathName); if (data == null) - LogPanel.log("Could not find or open:\n" + fullPathName); + LogPanel.log(GT._("Could not find or open:\n") + fullPathName); else { name = writeFileBytes(name, data); LogPanel.log(name); @@ -586,7 +587,7 @@ path = path.concat(".gz"); GZIPOutputStream gzFile = new GZIPOutputStream(new FileOutputStream(path)); gzFile.write(data); - LogPanel.log(" ...Compressing large data file to\n"); + LogPanel.log(GT._(" ...Compressing large data file to\n")); gzFile.flush(); gzFile.close(); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ni...@us...> - 2008-08-12 22:39:16
|
Revision: 9714 http://jmol.svn.sourceforge.net/jmol/?rev=9714&view=rev Author: nicove Date: 2008-08-12 22:39:09 +0000 (Tue, 12 Aug 2008) Log Message: ----------- Update of .po files Modified Paths: -------------- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ca.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-cs.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-da.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-de.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-et.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-fr.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-hu.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-it.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ko.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-nl.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pl.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pt.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pt_BR.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ru.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-sv.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-tr.po trunk/Jmol/src/org/jmol/translation/Jmol/Jmol.pot trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ca.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ca.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ca.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:45+0000\n" "Last-Translator: Toni Hermoso Pulido <to...@so...>\n" "Language-Team: Catalan <jmo...@li...>\n" @@ -1367,7 +1367,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-cs.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-cs.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-cs.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:45+0000\n" "Last-Translator: martin.slavik <Unknown>\n" "Language-Team: Czech <Jmo...@li...>\n" @@ -1367,7 +1367,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-da.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-da.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-da.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:45+0000\n" "Last-Translator: Nicolas Vervelle <Unknown>\n" "Language-Team: Danish <da...@li...>\n" @@ -1347,7 +1347,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-de.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-de.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-de.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Jmol 10\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2007-05-17 23:50+0100\n" "Last-Translator: Nicolas Vervelle <ni...@us...>\n" "Language-Team: none\n" @@ -1362,7 +1362,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Jmol 10\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Angel Herráez <ang...@ua...>\n" "Language-Team: Spanish <Jmo...@li...>\n" @@ -1353,7 +1353,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-et.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-et.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-et.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Ivo Sarak <Unknown>\n" "Language-Team: Estonian <Jmo...@li...>\n" @@ -1352,7 +1352,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-fr.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-fr.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-fr.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:53+0000\n" "Last-Translator: Nicolas Vervelle <Unknown>\n" "Language-Team: French <Jmo...@li...>\n" @@ -1351,7 +1351,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-hu.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-hu.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-hu.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Zörgő Zoltán <Unknown>\n" "Language-Team: Hungarian <Jmo...@li...>\n" @@ -1362,7 +1362,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-it.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-it.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-it.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Nicolas Vervelle <Unknown>\n" "Language-Team: Italian <it...@li...>\n" @@ -1350,7 +1350,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ko.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ko.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ko.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Won-kyu Park <Unknown>\n" "Language-Team: Korean <LL...@li...>\n" @@ -1348,7 +1348,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-nl.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-nl.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-nl.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Egon Willighagen <Unknown>\n" "Language-Team: Dutch <jmo...@li...>\n" @@ -1352,7 +1352,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pl.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pl.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pl.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Bartosz Kaszubowski <go...@gm...>\n" "Language-Team: Polish <pl...@li...>\n" @@ -1349,7 +1349,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pt.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pt.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pt.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2005-12-20 07:33-0000\n" "Last-Translator: Metro <por...@gm...>\n" "Language-Team: Portugal@Folding <Jmo...@li...>\n" @@ -1367,7 +1367,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pt_BR.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pt_BR.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-pt_BR.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" "POT-Creation-Date: 2008-08-12 20:42+0200\n" -"PO-Revision-Date: 2008-08-12 09:32-0300\n" +"PO-Revision-Date: 2008-08-12 19:01-0300\n" "Last-Translator: Sérgio Ceroni da Silva <ce...@cb...>\n" "Language-Team: Brazilian Portuguese <Jmo...@li...>\n" "MIME-Version: 1.0\n" @@ -899,12 +899,8 @@ msgstr "largura x altura da janela, por exemplo {0}" #: org/openscience/jmol/app/Jmol.java:518 -msgid "" -"JPG image quality (1-100; default 75) or PNG image compression (0-9; default " -"2, maximum compression 9)" -msgstr "" -"qualidade da imagem JPG (1-100; padrão=75) ou compressão da imagem PNG (0-9; " -"padrão=2, compressão máxima=9)" +msgid "JPG image quality (1-100; default 75) or PNG image compression (0-9; default 2, maximum compression 9)" +msgstr "qualidade da imagem JPG (1-100; padrão=75) ou compressão da imagem PNG (0-9; padrão=2, compressão máxima=9)" #: org/openscience/jmol/app/Jmol.java:524 #, java-format @@ -981,8 +977,7 @@ msgstr "Nome do arquivo" #: org/openscience/jmol/app/PovrayDialog.java:157 -msgid "" -"'caffeine.pov' -> 'caffeine.pov', 'caffeine.pov.ini', 'caffeine.pov.spt'" +msgid "'caffeine.pov' -> 'caffeine.pov', 'caffeine.pov.ini', 'caffeine.pov.spt'" msgstr "'cafeína.pov' -> 'cafeína.pov', 'cafeína.pov.ini', 'cafeína.pov.spt'" #: org/openscience/jmol/app/PovrayDialog.java:167 @@ -1178,8 +1173,7 @@ #: org/openscience/jmol/app/PreferencesDialog.java:417 msgid "Bond Tolerance - sum of two covalent radii + this value" -msgstr "" -"Tolerância de Ligação - somatório de dois raios covalentes + este valor" +msgstr "Tolerância de Ligação - somatório de dois raios covalentes + este valor" #: org/openscience/jmol/app/PreferencesDialog.java:468 msgid "Minimum Bonding Distance" @@ -1227,23 +1221,23 @@ #: org/openscience/jmol/app/webexport/JmolInstance.java:66 msgid "Attempt to make scratch directory failed." -msgstr "" +msgstr "Tentativa de criar diretório temporário falhou" #: org/openscience/jmol/app/webexport/JmolInstance.java:127 msgid "Failed to delete scratch file " -msgstr "" +msgstr "Falha ao deletar arquivo temporário" #: org/openscience/jmol/app/webexport/LogPanel.java:52 msgid "Log and Error Messages:" -msgstr "" +msgstr "Mensagens de erro e de registro:" #: org/openscience/jmol/app/webexport/LogPanel.java:60 msgid "Messages (see Log tab for full history):" -msgstr "" +msgstr "Mensagens (vide aba de Registros para informações completas):" #: org/openscience/jmol/app/webexport/PopInJmol.java:39 msgid "These names will be used as filenames for the applets" -msgstr "" +msgstr "Estes nomes serão usados como nomes de arquivos para os \"applets\"" #: org/openscience/jmol/app/webexport/PopInJmol.java:40 msgid "pop_in_instructions.html" @@ -1251,16 +1245,15 @@ #: org/openscience/jmol/app/webexport/PopInJmol.java:62 msgid "Applet width:" -msgstr "" +msgstr "Largura do \"applet\":" #: org/openscience/jmol/app/webexport/PopInJmol.java:64 -#, fuzzy msgid "height:" -msgstr "Altura : " +msgstr "altura:" #: org/openscience/jmol/app/webexport/ScriptButtons.java:39 msgid "These names will be used for button labels" -msgstr "" +msgstr "Estes nomes serão usados como rótulos nos botões" #: org/openscience/jmol/app/webexport/ScriptButtons.java:40 msgid "script_button_instructions.html" @@ -1268,7 +1261,7 @@ #: org/openscience/jmol/app/webexport/ScriptButtons.java:54 msgid "% of window for applet width:" -msgstr "" +msgstr "% da janela para a largura do \"applet\":" #: org/openscience/jmol/app/webexport/WebExport.java:95 msgid "WebExportIntro.html" @@ -1276,190 +1269,169 @@ #: org/openscience/jmol/app/webexport/WebExport.java:97 msgid "Couldn't find file: WebExportIntro.html" -msgstr "" +msgstr "Arquivo não pôde ser encontrado: WebExportIntro.html" #: org/openscience/jmol/app/webexport/WebExport.java:116 msgid "Introduction" -msgstr "" +msgstr "Introdução" #: org/openscience/jmol/app/webexport/WebExport.java:144 msgid "Log" -msgstr "" +msgstr "Registro" #: org/openscience/jmol/app/webexport/WebExport.java:189 msgid "Jmol Web Page Maker" -msgstr "" +msgstr "Criador de páginas WWW do Jmol" #: org/openscience/jmol/app/webexport/WebPanel.java:103 msgid "A web page containing Jmol applets" -msgstr "" +msgstr "Uma página WWW contendo \"applets\" Jmol" #: org/openscience/jmol/app/webexport/WebPanel.java:127 msgid "double-click and drag to reorder" -msgstr "" +msgstr "duplo-clique seguido de arrastar para reordenar" #: org/openscience/jmol/app/webexport/WebPanel.java:131 msgid "Add Present Jmol State as Instance..." -msgstr "" +msgstr "Adiconar o estado atual do Jmol como instância..." #: org/openscience/jmol/app/webexport/WebPanel.java:136 -#, fuzzy msgid "Show Selected" -msgstr "Selecionar" +msgstr "Mostrar selecionado" #: org/openscience/jmol/app/webexport/WebPanel.java:138 msgid "Delete Selected" -msgstr "" +msgstr "Apagar selecionados" #: org/openscience/jmol/app/webexport/WebPanel.java:169 msgid "Jmol Instances:" -msgstr "" +msgstr "Instâncias do Jmol:" #: org/openscience/jmol/app/webexport/WebPanel.java:189 msgid "Help/Instructions" -msgstr "" +msgstr "Ajuda/Instruções" #: org/openscience/jmol/app/webexport/WebPanel.java:195 msgid "Cartoon of Page" -msgstr "" +msgstr "\"Cartoon\" da página" #: org/openscience/jmol/app/webexport/WebPanel.java:202 msgid "Cartoon of Page:" -msgstr "" +msgstr "\"Cartoon\" da página:" #: org/openscience/jmol/app/webexport/WebPanel.java:207 -#, fuzzy msgid "Save HTML as..." -msgstr "&Gravar como..." +msgstr "Gravar HTML como..." #: org/openscience/jmol/app/webexport/WebPanel.java:217 msgid "Relative server path to jar files:" -msgstr "" +msgstr "\"Path\" relativo do servidor para arquivos jar:" #: org/openscience/jmol/app/webexport/WebPanel.java:223 msgid "Relative local path to jar files:" -msgstr "" +msgstr "\"Path\" relativo local para arquivos jar:" #: org/openscience/jmol/app/webexport/WebPanel.java:229 msgid "Author (your name):" -msgstr "" +msgstr "Autor (seu nome):" #: org/openscience/jmol/app/webexport/WebPanel.java:236 msgid "Browser window title for this web page:" -msgstr "" +msgstr "Título da janela do navegador para esta página WWW:" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" -msgstr "" +msgid "Give the occurence of Jmol a name:" +msgstr "Nomear esta ocorrência do Jmol:" #: org/openscience/jmol/app/webexport/WebPanel.java:352 msgid "added Instance " -msgstr "" +msgstr "Instância adicionada" #: org/openscience/jmol/app/webexport/WebPanel.java:355 msgid "updated Instance " -msgstr "" +msgstr "Instância atualizada" #: org/openscience/jmol/app/webexport/WebPanel.java:392 msgid "Select a directory to create or an HTML file to save" -msgstr "" +msgstr "Selecione um diretório a ser criado ou um arquivo HTML para ser gravado" #: org/openscience/jmol/app/webexport/WebPanel.java:410 msgid "Call to FileWriter unsuccessful." -msgstr "" +msgstr "Chamada a \"FileWriter\" foi malsucedida" #: org/openscience/jmol/app/webexport/WebPanel.java:448 -#, fuzzy msgid "Using directory " -msgstr "Diretório de trabalho" +msgstr "Usando diretório " #: org/openscience/jmol/app/webexport/WebPanel.java:449 msgid " adding JmolPopIn.js" -msgstr "" +msgstr " adicionando JmolPopIn.js" #: org/openscience/jmol/app/webexport/WebPanel.java:458 msgid " ...adding " -msgstr "" +msgstr " ...adicionando " #: org/openscience/jmol/app/webexport/WebPanel.java:548 msgid " ...copying\n" -msgstr "" +msgstr " ...copiando\n" #: org/openscience/jmol/app/webexport/WebPanel.java:548 msgid "" "\n" " to" msgstr "" +"\n" +" para" #: org/openscience/jmol/app/webexport/WebPanel.java:551 msgid "Could not find or open:\n" -msgstr "" +msgstr "Não foi possível localizar ou abrir:\n" #: org/openscience/jmol/app/webexport/WebPanel.java:590 msgid " ...Compressing large data file to\n" -msgstr "" +msgstr " ...Comprimindo grande arquivo de dados para\n" #~ msgid "Select Atoms" #~ msgstr "Selecionar átomos" - #~ msgid "Make crystal..." #~ msgstr "Construir cristal..." - #~ msgid "Export view to an image or script file." #~ msgstr "Exportar visualização para um arquivo de imagem ou de script" - #~ msgid "Select an atom or region." #~ msgstr "Selecionar um átomo ou região" - #~ msgid "View measurement table." #~ msgstr "Ver a tabela de medições" - #~ msgid "Export &PDF..." #~ msgstr "Exportar &PDF..." - #~ msgid "Image size" #~ msgstr "Tamanho da imagem" - #~ msgid "Output format : " #~ msgstr "Formato de saida : " - #~ msgid "Select the file format of the output file" #~ msgstr "Selecionar o formato do arquivo de saída" - #~ msgid "Command Line to Execute" #~ msgstr "Linha de comando a ser executada" - #~ msgid "The actual command which will be executed" #~ msgstr "O comando a ser executado" - #~ msgid "null component string" #~ msgstr "\"null component string\"" - #~ msgid "Filename Stem" #~ msgstr "Nome-base para o arquivo" - #~ msgid "Use .ini file" #~ msgstr "Usar arquivo .ini" - #~ msgid "Save options in a .ini file" #~ msgstr "Gravar as opções em um arquivo .ini" - #~ msgid "Render all frames" #~ msgstr "Renderizar todos os quadros" - #~ msgid "Render each model (not only the currently displayed one)" #~ msgstr "Renderizar cada modelo (não somente o que está sendo visualizado)" - #~ msgid "Turn on POV-Ray anti-aliasing" #~ msgstr "Ligar filtro anti-serrilhado do POV-Ray" - #~ msgid "Use povray's slower but higher quality anti-aliasing mode" #~ msgstr "" #~ "Usar o modo anti-serrilhado (mais lento, melhor qualidade) do POV-Ray" - #~ msgid "Render in pov-ray..." #~ msgstr "Renderizar no POV-Ray..." - #~ msgid "File not loaded" #~ msgstr "Ficheiro não carregado" @@ -1470,111 +1442,76 @@ #, fuzzy #~ msgid "Jmol executing script ..." #~ msgstr "Executando um script..." - #~ msgid "Wi&reframe Rotation" #~ msgstr "Rotação de FrameLi&gado" - #~ msgid "Wireframe Rotation" #~ msgstr "Rotação de frame" - #~ msgid "Colors" #~ msgstr "Cores" - #~ msgid "Background" #~ msgstr "Fundo" - #~ msgid "Set the Background Color" #~ msgstr "Definir cor de fundo" - #~ msgid "Background Color" #~ msgstr "Cores do fundo" - #~ msgid "Picked Atoms" #~ msgstr "Átomos escolhidos" - #~ msgid "Set the Color for Picked Atoms" #~ msgstr "Definir cor de átomos escolhidos" - #~ msgid "Picked Atom Color" #~ msgstr "Cor do átomo escolhido" - #~ msgid "Text" #~ msgstr "Texto" - #~ msgid "Set the Color for Text" #~ msgstr "Definir cor do texto" - #~ msgid "Text Color" #~ msgstr "Cor do texto" - #~ msgid "Set the Color for Bonds" #~ msgstr "Definir cor para as ligações" - #~ msgid "Bond Color" #~ msgstr "Cor da ligação" - #~ msgid "Vectors" #~ msgstr "Vectores" - #~ msgid "Set the Vector Color" #~ msgstr "Definir cor do Vector" - #~ msgid "Vector Color" #~ msgstr "Cor do vector" - #~ msgid "Color for distance, angle, & torsion measurements" #~ msgstr "Cor para a distância, ângulo, e medições de torção" - #~ msgid "Measurements Color" #~ msgstr "Cor das meidções" - #~ msgid "Loading plugins..." #~ msgstr "Carregamento de plugins..." - #~ msgid "15% vanderWaals" #~ msgstr "15% vanderWaals" - #~ msgid "25% vanderWaals" #~ msgstr "20% vanderWaals" - #~ msgid "100% vanderWaals" #~ msgstr "20% vanderWaals" - #~ msgid "0.10 Å" #~ msgstr "0.10 Å" - #~ msgid "0.15 Å" #~ msgstr "0.15 Å" - #~ msgid "0.20 Å" #~ msgstr "0.15 Å" - #~ msgid "0.05 Å" #~ msgstr "0.05 Å" - #~ msgid "Scale 0.5" #~ msgstr "Escala 0.5" - #~ msgid "Scale 1" #~ msgstr "Escala 1" - #~ msgid "Scale 2" #~ msgstr "Escala 2" - #~ msgid "Scale 5" #~ msgstr "Escala 5" - #~ msgid "100%" #~ msgstr "100%" - #~ msgid "150%" #~ msgstr "150%" - #~ msgid "200%" #~ msgstr "200%" - #~ msgid "400%" #~ msgstr "400%" - #~ msgid "800%" #~ msgstr "800%" + Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ru.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ru.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-ru.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Nicolas Vervelle <Unknown>\n" "Language-Team: Russian <ru...@li...>\n" @@ -1342,7 +1342,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-sv.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-sv.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-sv.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Nicolas Vervelle <Unknown>\n" "Language-Team: Swedish <sv...@li...>\n" @@ -1343,7 +1343,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-tr.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-tr.po 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-tr.po 2008-08-12 22:39:09 UTC (rev 9714) @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: 2008-08-04 20:46+0000\n" "Last-Translator: Muhammet Kara <Unknown>\n" "Language-Team: Turkish <yer...@kd...>\n" @@ -1364,7 +1364,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol.pot =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol.pot 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol.pot 2008-08-12 22:39:09 UTC (rev 9714) @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: jmo...@li...\n" -"POT-Creation-Date: 2008-08-12 20:42+0200\n" +"POT-Creation-Date: 2008-08-13 00:24+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL...@li...>\n" @@ -1340,7 +1340,7 @@ msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:322 -msgid "Give the occurance of Jmol a name:" +msgid "Give the occurence of Jmol a name:" msgstr "" #: org/openscience/jmol/app/webexport/WebPanel.java:352 Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-12 22:18:52 UTC (rev 9713) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-12 22:39:09 UTC (rev 9714) @@ -319,7 +319,7 @@ String label = (instanceList.getSelectedIndices().length != 1 ? "" : getInstanceName(-1)); String name = JOptionPane.showInputDialog( - GT._("Give the occurance of Jmol a name:"), label); + GT._("Give the occurence of Jmol a name:"), label); if (name == null) return; //need to get the script... This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-13 00:38:23
|
Revision: 9719 http://jmol.svn.sourceforge.net/jmol/?rev=9719&view=rev Author: hansonr Date: 2008-08-13 00:38:17 +0000 (Wed, 13 Aug 2008) Log Message: ----------- 11.6.RC6 VERSION # bug fix: oops, 11.6.RC5 is totally broken due to missing refreshes # bug fix: language localization in webexport Modified Paths: -------------- trunk/Jmol/src/org/jmol/minimize/Minimizer.java trunk/Jmol/src/org/jmol/shapespecial/Draw.java trunk/Jmol/src/org/jmol/viewer/FrameRenderer.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/MouseManager.java trunk/Jmol/src/org/jmol/viewer/RepaintManager.java trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java trunk/Jmol/src/org/openscience/jmol/app/PreferencesDialog.java Modified: trunk/Jmol/src/org/jmol/minimize/Minimizer.java =================================================================== --- trunk/Jmol/src/org/jmol/minimize/Minimizer.java 2008-08-12 23:27:53 UTC (rev 9718) +++ trunk/Jmol/src/org/jmol/minimize/Minimizer.java 2008-08-13 00:38:17 UTC (rev 9719) @@ -699,7 +699,7 @@ viewer.notifyMinimizationStatus(); if (doRefresh) { updateAtomXYZ(); - viewer.refresh(0, "minimization step " + currentStep); + viewer.refresh(3, "minimization step " + currentStep); } return going; } @@ -714,7 +714,7 @@ viewer.setFloatProperty("_minimizationEnergy", (float) pFF.getEnergy()); viewer.setStringProperty("_minimizationStatus", (failed ? "failed" : "done")); viewer.notifyMinimizationStatus(); - viewer.refresh(0, "Minimizer:done" + (failed ? " EXPLODED" : "OK")); + viewer.refresh(3, "Minimizer:done" + (failed ? " EXPLODED" : "OK")); } double[][] coordSaved; Modified: trunk/Jmol/src/org/jmol/shapespecial/Draw.java =================================================================== --- trunk/Jmol/src/org/jmol/shapespecial/Draw.java 2008-08-12 23:27:53 UTC (rev 9718) +++ trunk/Jmol/src/org/jmol/shapespecial/Draw.java 2008-08-13 00:38:17 UTC (rev 9719) @@ -989,7 +989,7 @@ mesh.setCenter(i); if (Logger.debugging) Logger.debug(getDrawCommand(mesh)); - viewer.refresh(0, "draw"); + viewer.refresh(3, "draw"); } private boolean findPickedObject(int x, int y, boolean isPicking, BitSet bsVisible) { Modified: trunk/Jmol/src/org/jmol/viewer/FrameRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FrameRenderer.java 2008-08-12 23:27:53 UTC (rev 9718) +++ trunk/Jmol/src/org/jmol/viewer/FrameRenderer.java 2008-08-13 00:38:17 UTC (rev 9719) @@ -64,7 +64,8 @@ if (shape == null) continue; - //System.out.println("FrameRenderer: " + JmolConstants.getShapeClassName(i)); + + //System.out.println("FrameRenderer: " + i + " " + JmolConstants.getShapeClassName(i)); getRenderer(i, g3d).render(g3d, modelSet, shape); //, rectClip } if (logTime) Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-12 23:27:53 UTC (rev 9718) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-13 00:38:17 UTC (rev 9719) @@ -1,8 +1,9 @@ # Developers: to add a description of changes you have made, # add it on a line starting with # below the "version=..." line -version=11.6.RC6_dev +version=11.6.RC6 +# bug fix: oops, 11.6.RC5 is totally broken due to missing refreshes # bug fix: language localization in webexport # ----------------------------------------------------------------------------- Modified: trunk/Jmol/src/org/jmol/viewer/MouseManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2008-08-12 23:27:53 UTC (rev 9718) +++ trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2008-08-13 00:38:17 UTC (rev 9719) @@ -300,7 +300,7 @@ viewer.setCursor(Viewer.CURSOR_DEFAULT); if (rubberbandSelectionMode && ((modifiers & BUTTON_MODIFIER_MASK) == SHIFT_LEFT)) { viewer.selectRectangle(rectRubber, modifiers); - viewer.refresh(0, "mouseReleased"); + viewer.refresh(3, "mouseReleased"); } rubberbandSelectionMode = false; rectRubber.x = Integer.MAX_VALUE; @@ -377,7 +377,7 @@ return; if (nearestPoint != null || measurementPending.getIndexOf(nearestAtomIndex) == 0) measurementPending.addPoint(nearestAtomIndex, nearestPoint, false); - viewer.refresh(0, "measurementPending"); + viewer.refresh(3, "measurementPending"); return; case 1: // mouse single click @@ -479,7 +479,7 @@ return; } else if (rubberbandSelectionMode) { calcRectRubberBand(); - viewer.refresh(0,"mouse-drag selection"); + viewer.refresh(3,"mouse-drag selection"); return; } case MIDDLE: Modified: trunk/Jmol/src/org/jmol/viewer/RepaintManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/RepaintManager.java 2008-08-12 23:27:53 UTC (rev 9718) +++ trunk/Jmol/src/org/jmol/viewer/RepaintManager.java 2008-08-13 00:38:17 UTC (rev 9719) @@ -360,7 +360,7 @@ setAnimationOff(false); return; } - viewer.refresh(0, "Viewer:setAnimationOn"); + viewer.refresh(3, "Viewer:setAnimationOn"); setAnimationRange(-1, -1); resumeAnimation(); } @@ -371,7 +371,7 @@ animationThread = null; } animationPaused = isPaused; - viewer.refresh(0, "Viewer:setAnimationOff"); + viewer.refresh(3, "Viewer:setAnimationOff"); animationOn(false); setStatusFrameChanged(); } Modified: trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java 2008-08-12 23:27:53 UTC (rev 9718) +++ trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java 2008-08-13 00:38:17 UTC (rev 9719) @@ -97,7 +97,7 @@ setRotateMode(); if (haveDisplay) status.setStatus(2, dimSize.width + " x " + dimSize.height); - viewer.refresh(0, "updateSize"); + viewer.refresh(3, "updateSize"); } public void paint(Graphics g) { Modified: trunk/Jmol/src/org/openscience/jmol/app/PreferencesDialog.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/PreferencesDialog.java 2008-08-12 23:27:53 UTC (rev 9718) +++ trunk/Jmol/src/org/openscience/jmol/app/PreferencesDialog.java 2008-08-13 00:38:17 UTC (rev 9719) @@ -572,7 +572,7 @@ } catch (Exception e) { Logger.error("Error saving preferences", e); } - viewer.refresh(0, "PreferencesDialog:save()"); + viewer.refresh(3, "PreferencesDialog:save()"); } void initializeProperties() { @@ -598,7 +598,7 @@ currentProperties.put(overrides[i], overrides[i+1]); } initVariables(); - viewer.refresh(0, "PreferencesDialog:resetDefaults()"); + viewer.refresh(3, "PreferencesDialog:resetDefaults()"); updateComponents(); } @@ -690,12 +690,12 @@ } else if (key.equals("Prefs.showAxes")) { showAxes = isSelected; viewer.setBooleanProperty("showAxes", isSelected); - viewer.refresh(0, "pref.showAxes"); + viewer.refresh(3, "pref.showAxes"); currentProperties.put("showAxes", strSelected); } else if (key.equals("Prefs.showBoundingBox")) { showBoundingBox = isSelected; viewer.setBooleanProperty("showBoundBox", isSelected); - viewer.refresh(0, "pref.showBoundingBox"); + viewer.refresh(3, "pref.showBoundingBox"); currentProperties.put("showBoundingBox", strSelected); } else if (key.equals("Prefs.axesOrientationRasmol")) { axesOrientationRasmol = isSelected; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gu...@us...> - 2008-08-13 13:24:40
|
Revision: 9724 http://jmol.svn.sourceforge.net/jmol/?rev=9724&view=rev Author: gutow Date: 2008-08-13 13:24:33 +0000 (Wed, 13 Aug 2008) Log Message: ----------- bug fix: more language localization in webexport Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-13 06:31:34 UTC (rev 9723) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-13 13:24:33 UTC (rev 9724) @@ -3,6 +3,8 @@ version=11.6.RC7_dev +# bug fix: more language localization in webexport + # ----------------------------------------------------------------------------- #version=11.6.RC6 Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-13 06:31:34 UTC (rev 9723) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-13 13:24:33 UTC (rev 9724) @@ -349,7 +349,7 @@ JmolInstance instance = new JmolInstance(viewer, name, script, width, height); if (instance == null) { LogPanel - .log("Error creating new instance containing script(s) and image."); + .log(GT._("Error creating new instance containing script(s) and image.")); } int i; @@ -359,10 +359,10 @@ if (i < 0) { i = listModel.getSize(); listModel.addElement(instance); - LogPanel.log(GT._("added Instance ") + instance.name); + LogPanel.log(GT._("added Instance {0}", instance.name)); } else { listModel.setElementAt(instance, i); - LogPanel.log(GT._("updated Instance ") + instance.name); + LogPanel.log(GT._("updated Instance {0}", instance.name)); } instanceList.setSelectedIndex(i); syncLists(); @@ -455,7 +455,7 @@ DefaultListModel listModel = (DefaultListModel) InstanceList.getModel(); LogPanel.log(""); if (made_datadir) { - LogPanel.log(GT._("Using directory ") + datadirPath); + LogPanel.log(GT._("Using directory {0}", datadirPath)); LogPanel.log(GT._(" adding JmolPopIn.js")); writeFile(datadirPath + "/JmolPopIn.js", @@ -465,7 +465,7 @@ String javaname = thisInstance.javaname; String script = thisInstance.script; LogPanel.log(" ...jmolApplet" + i); - LogPanel.log(GT._(" ...adding ") + javaname + ".png"); + LogPanel.log(GT._(" ...adding {0}.png", javaname)); try { thisInstance.movepict(datadirPath); } catch (IOException IOe) { @@ -555,10 +555,10 @@ if (gzoutFile.exists()) return gzname; try { - LogPanel.log(GT._(" ...copying\n") + fullPathName + GT._("\n to")); + LogPanel.log(GT._(" ...copying\n{0}\n to",fullPathName)); byte[] data = getFileAsBytes(fullPathName); if (data == null) - LogPanel.log(GT._("Could not find or open:\n") + fullPathName); + LogPanel.log(GT._("Could not find or open:\n{0}", fullPathName)); else { name = writeFileBytes(name, data); LogPanel.log(name); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-27 14:35:39
|
Revision: 9772 http://jmol.svn.sourceforge.net/jmol/?rev=9772&view=rev Author: hansonr Date: 2008-08-27 14:35:36 +0000 (Wed, 27 Aug 2008) Log Message: ----------- version=11.6.RC11_dev # bug fix -- web export / language Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-27 14:08:44 UTC (rev 9771) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-27 14:35:36 UTC (rev 9772) @@ -3,6 +3,9 @@ version=11.6.RC11_dev +# bug fix -- web export / language +# bug fix -- draw pointgroup C2 2 not distinguished from draw pointgroup C2 1 +# bug fix -- d2 point groups cause null pointer exception due to missing principal axis # bug fix -- {*}.x = .... broken # ----------------------------------------------------------------------------- Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-27 14:08:44 UTC (rev 9771) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-27 14:35:36 UTC (rev 9772) @@ -296,7 +296,7 @@ static String getResourceString(Object object, String name) throws IOException { - URL url = WebExport.getResource(object, name); + URL url = (name.indexOf(".") >= 0 ? getResource(object, name) : getHtmlResource(object, name)); if (url == null) { throw new FileNotFoundException("Error loading resource " + name); } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-27 14:08:44 UTC (rev 9771) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-27 14:35:36 UTC (rev 9772) @@ -275,32 +275,6 @@ return editorScrollPane.getHeight(); } - private String getResourceString(String name) throws IOException { - URL url = WebExport.getResource(this, name); - if (url == null) { - throw new FileNotFoundException("Error loading resource " + name); - } - StringBuffer sb = new StringBuffer(); - try { - //turns out from the Jar file - // it's a sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream - // and within Eclipse it's a BufferedInputStream - //LogPanel.log(name + " : " + url.getContent().toString()); - BufferedReader br = new BufferedReader(new InputStreamReader( - (InputStream) url.getContent())); - String line; - while ((line = br.readLine()) != null) - sb.append(line).append("\n"); - br.close(); - } catch (Exception e) { - LogPanel.log(e.getMessage()); - } - String str = sb.toString(); - //LogPanel.log("Loading resource " + name + "(" - // + str.length() + " bytes)"); - return str; - } - private void writeFile(String filename, String data) { //LogPanel.log("Writing file " + filename + "(" // + data.length() + " bytes)"); @@ -459,7 +433,7 @@ LogPanel.log(GT._(" adding JmolPopIn.js")); writeFile(datadirPath + "/JmolPopIn.js", - getResourceString("JmolPopIn.js")); + WebExport.getResourceString(this, "JmolPopIn.js")); for (int i = 0; i < listModel.getSize(); i++) { JmolInstance thisInstance = (JmolInstance) (listModel.getElementAt(i)); String javaname = thisInstance.javaname; @@ -493,12 +467,12 @@ LogPanel.log(" ...adding " + javaname + ".spt"); writeFile(datadirPath + "/" + javaname + ".spt", script); } - String html = getResourceString(panelName + "_template"); + String html = WebExport.getResourceString(this, panelName + "_template"); html = fixHtml(html); appletInfoDivs = ""; StringBuffer appletDefs = new StringBuffer(); if (!useAppletJS) - htmlAppletTemplate = getResourceString(panelName + "_template2"); + htmlAppletTemplate = WebExport.getResourceString(this, panelName + "_template2"); for (int i = 0; i < listModel.getSize(); i++) html = getAppletDefs(i, html, appletDefs, (JmolInstance) listModel .getElementAt(i)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-27 15:27:23
|
Revision: 9774 http://jmol.svn.sourceforge.net/jmol/?rev=9774&view=rev Author: hansonr Date: 2008-08-27 15:27:19 +0000 (Wed, 27 Aug 2008) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/src/org/jmol/applet/Console.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java Added Paths: ----------- trunk/Jmol/src/org/jmol/applet/GuiMap.java Modified: trunk/Jmol/src/org/jmol/applet/Console.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Console.java 2008-08-27 14:39:48 UTC (rev 9773) +++ trunk/Jmol/src/org/jmol/applet/Console.java 2008-08-27 15:27:19 UTC (rev 9774) @@ -50,6 +50,8 @@ private final JmolViewer viewer; + private GuiMap guimap = new GuiMap(); + JmolViewer getViewer() { return viewer; } @@ -131,26 +133,24 @@ } protected void addHelpMenuBar(JMenuBar menuBar) { - //JMenu m0 = createMenu("Help"); - JMenu m0 = newJMenu("Help"); - JMenuItem item = new JMenuItem("Search..."); + JMenu m0 = guimap.newJMenu("help"); + JMenuItem item = guimap.newJMenuItem("search"); item.addActionListener(this); item.setName("help ?search=?"); m0.add(item); if (m0 == null) return; addHelpItems(m0, "commands", "command"); - addHelpItems(m0, "math functions", "mathfunc"); - addHelpItems(m0, "set parameters", "setparam"); + addHelpItems(m0, "functions", "mathfunc"); + addHelpItems(m0, "parameters", "setparam"); addHelpItems(m0, "more", "misc"); menuBar.add(m0); } - private void addHelpItems(JMenu m0, String label, String attr) { - + private void addHelpItems(JMenu m0, String key, String attr) { + JMenu m = guimap.newJMenu(key); String[] commands = (String[]) viewer.getProperty(null, "tokenList", attr); - JMenu m = new JMenu(label); m0.add(m); JMenu m2 = null; String firstCommand = null; @@ -184,107 +184,10 @@ } } - JMenu newJMenu(String key) { - String label = "Help"; - return new KeyJMenu(key, getLabelWithoutMnemonic(label), getMnemonic(label)); - } - - class KeyJMenu extends JMenu { - String key; - KeyJMenu(String key, String label, char mnemonic) { - super(label); - if (mnemonic != ' ') { - setMnemonic(mnemonic); - } - this.key = key; - //map.put(key, this); - } - public String getKey() { - return key; - } - } - - - private char getMnemonic(String label) { - return 'h'; - } - - private String getLabelWithoutMnemonic(String label) { - return label; - } - - protected JMenu createMenu(String key) { - - // Get list of items from resource file: -// String[] itemKeys = new tokenize(JmolResourceHandler.getStringX(key)); - - // Get label associated with this menu: - JMenu menu = newJMenu(key); - /* - ImageIcon f = JmolResourceHandler.getIconX(key + "Image"); - if (f != null) { - menu.setHorizontalTextPosition(SwingConstants.RIGHT); - menu.setIcon(f); - } - - // Loop over the items in this menu: - for (int i = 0; i < itemKeys.length; i++) { - - String item = itemKeys[i]; - if (item.equals("-")) { - menu.addSeparator(); - continue; - } - if (item.endsWith("Menu")) { - JMenu pm; - if ("recentFilesMenu".equals(item)) { - recentFilesMenu = pm = createMenu(item); - } else { - pm = createMenu(item); - } - menu.add(pm); - continue; - } - JMenuItem mi = createMenuItem(item); - menu.add(mi); - } -*/ - - //menu.addMenuListener(display.getMenuListener()); - - //JMenuItem mi = createMenuItem("Help"); - //menu.add(mi); - - return menu; - } - protected JMenuItem createMenuItem(String cmd) { - - JMenuItem mi; - mi = newJMenuItem(cmd); - return mi; + return guimap.newJMenuItem(cmd); } - JMenuItem newJMenuItem(String key) { - String label = "Help"; - return new KeyJMenuItem(key, getLabelWithoutMnemonic(label), getMnemonic(label)); - } - - class KeyJMenuItem extends JMenuItem { - String key; - KeyJMenuItem(String key, String label, char mnemonic) { - super(label); - if (mnemonic != ' ') { - setMnemonic(mnemonic); - } - this.key = key; - //map.put(key, this); - } - public String getKey() { - return key; - } - } - private void setupInput() { input.setLineWrap(true); input.setWrapStyleWord(true); Added: trunk/Jmol/src/org/jmol/applet/GuiMap.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/GuiMap.java (rev 0) +++ trunk/Jmol/src/org/jmol/applet/GuiMap.java 2008-08-27 15:27:19 UTC (rev 9774) @@ -0,0 +1,141 @@ +/* $RCSfile$ + * $Author: hansonr $ + * $Date: 2008-08-05 12:32:28 -0500 (Tue, 05 Aug 2008) $ + * $Revision: 9669 $ + * + * Copyright (C) 2002-2005 The Jmol Development Team + * + * Contact: jmo...@li... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.jmol.applet; + +import java.util.Hashtable; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.AbstractButton; + +import org.jmol.i18n.GT; + +class GuiMap { + + Hashtable map = new Hashtable(); + + private Hashtable labels = null; + + private Hashtable setupLabels() { + Hashtable labels = new Hashtable(); + labels.put("help", GT._("&Help")); + labels.put("search", GT._("&Search...")); + labels.put("commands", GT._("&Commands")); + labels.put("functions", GT._("Math &Functions")); + labels.put("parameters", GT._("Set &Parameters")); + labels.put("more", GT._("&More")); + return labels; + } + + String getLabel(String key) { + if (labels == null) { + labels = setupLabels(); + } + return (String)labels.get(key); + } + + JMenu newJMenu(String key) { + String label = getLabel(key); + return new KeyJMenu(key, getLabelWithoutMnemonic(label), getMnemonic(label)); + } + + JMenuItem newJMenuItem(String key) { + String label = getLabel(key); + return new KeyJMenuItem(key, getLabelWithoutMnemonic(label), getMnemonic(label)); + } + + Object get(String key) { + return map.get(key); + } + + static String getKey(Object obj) { + return (((GetKey)obj).getKey()); + } + + static String getLabelWithoutMnemonic(String label) { + if (label == null) { + return null; + } + int index = label.indexOf('&'); + if (index == -1) { + return label; + } + return label.substring(0, index) + + ((index < label.length() - 1) ? label.substring(index + 1) : ""); + } + + static char getMnemonic(String label) { + if (label == null) { + return ' '; + } + int index = label.indexOf('&'); + if ((index == -1) || (index == label.length() - 1)){ + return ' '; + } + return label.charAt(index + 1); + } + + void setSelected(String key, boolean b) { + ((AbstractButton)get(key)).setSelected(b); + } + + boolean isSelected(String key) { + return ((AbstractButton)get(key)).isSelected(); + } + + + interface GetKey { + public String getKey(); + } + + class KeyJMenu extends JMenu implements GetKey { + String key; + KeyJMenu(String key, String label, char mnemonic) { + super(label); + if (mnemonic != ' ') { + setMnemonic(mnemonic); + } + this.key = key; + map.put(key, this); + } + public String getKey() { + return key; + } + } + + class KeyJMenuItem extends JMenuItem implements GetKey { + String key; + KeyJMenuItem(String key, String label, char mnemonic) { + super(label); + if (mnemonic != ' ') { + setMnemonic(mnemonic); + } + this.key = key; + map.put(key, this); + } + public String getKey() { + return key; + } + } +} + Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-27 14:39:48 UTC (rev 9773) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-27 15:27:19 UTC (rev 9774) @@ -3,11 +3,13 @@ version=11.6.RC11 -# bug fix -- web export / language -# bug fix -- draw pointgroup C2 2 not distinguished from draw pointgroup C2 1 -# bug fix -- d2 point groups cause null pointer exception due to missing principal axis -# bug fix -- {*}.x = .... broken +# translation: menu items in console +# bug fix: web export / language +# bug fix: draw pointgroup C2 2 not distinguished from draw pointgroup C2 1 +# bug fix: d2 point groups cause null pointer exception due to missing principal axis +# bug fix: {*}.x = .... broken + # ----------------------------------------------------------------------------- #version=11.6.RC10 Modified: trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java 2008-08-27 14:39:48 UTC (rev 9773) +++ trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java 2008-08-27 15:27:19 UTC (rev 9774) @@ -262,7 +262,7 @@ private MenuListener menuListener = new MenuListener() { public void menuSelected(MenuEvent e) { - String menuKey = guimap.getKey(e.getSource()); + String menuKey = GuiMap.getKey(e.getSource()); if (menuKey.equals("display")) { setDisplayMenuState(); } Modified: trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java 2008-08-27 14:39:48 UTC (rev 9773) +++ trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java 2008-08-27 15:27:19 UTC (rev 9774) @@ -228,11 +228,11 @@ return map.get(key); } - String getKey(Object obj) { + static String getKey(Object obj) { return (((GetKey)obj).getKey()); } - public String getLabelWithoutMnemonic(String label) { + private static String getLabelWithoutMnemonic(String label) { if (label == null) { return null; } @@ -244,7 +244,7 @@ ((index < label.length() - 1) ? label.substring(index + 1) : ""); } - public char getMnemonic(String label) { + private static char getMnemonic(String label) { if (label == null) { return ' '; } @@ -258,12 +258,12 @@ void setSelected(String key, boolean b) { ((AbstractButton)get(key)).setSelected(b); } - +/* boolean isSelected(String key) { return ((AbstractButton)get(key)).isSelected(); } +*/ - interface GetKey { public String getKey(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-28 11:36:14
|
Revision: 9795 http://jmol.svn.sourceforge.net/jmol/?rev=9795&view=rev Author: hansonr Date: 2008-08-28 11:36:00 +0000 (Thu, 28 Aug 2008) Log Message: ----------- version=11.6.RC12_dev # translation: added GT._ calls for HTML templates and JS in WebExport Modified Paths: -------------- trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/Jmol.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java trunk/Jmol/src/org/openscience/jmol/app/webexport/html/JmolPopIn.js trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template.html trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template2.html trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template.html trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2.html Removed Paths: ------------- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template2_es.html trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template_es.html trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2_es.html trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template_es.html Modified: trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java 2008-08-28 11:36:00 UTC (rev 9795) @@ -1018,6 +1018,5 @@ if (menuText != null && item.indexOf("Text") >= 0) menuText.setProperty(item, word); } - } } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-28 11:36:00 UTC (rev 9795) @@ -3,6 +3,7 @@ version=11.6.RC12_dev +# translation: added GT._ calls for HTML templates and JS in WebExport # ----------------------------------------------------------------------------- #version=11.6.RC11 Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-08-28 11:36:00 UTC (rev 9795) @@ -1824,6 +1824,12 @@ new GT(callbackFunction); language = GT.getLanguage(); setupUIManager(); + if (webExport != null) { + WebExport.saveHistory(); + WebExport.dispose(); + webExport = WebExport.createAndShowGUI(viewer, historyFile, + WEB_MAKER_WINDOW_NAME); + } setupNewFrame(viewer.getStateInfo()); } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-28 11:36:00 UTC (rev 9795) @@ -51,6 +51,7 @@ import org.jmol.api.JmolViewer; import org.jmol.i18n.GT; +import org.jmol.util.TextFormat; import org.openscience.jmol.app.HistoryFile; public class WebExport extends JPanel implements WindowListener { @@ -66,7 +67,7 @@ private static HistoryFile historyFile; private static WebPanel[] webPanels; - private static WebExport webExport; + static WebExport webExport; private static JFrame webFrame; private static String windowName; @@ -86,6 +87,8 @@ JFileChooser fc = new JFileChooser(); webPanels = new WebPanel[2]; + + setTranslations(); if (runStatus != STAND_ALONE) { //Add tabs to the tabbed pane @@ -173,6 +176,11 @@ * event-dispatching thread. */ + public static void dispose() { + webFrame.dispose(); + webFrame = null; + } + public static WebExport createAndShowGUI(JmolViewer viewer, HistoryFile historyFile, String wName) { @@ -296,6 +304,33 @@ return url; } + static String[] translations; + public static void setTranslations() { + // called for a language change. + // for all templates and JmolPopIn.js + translations = new String[] { + "GT_JmolPopIn.js_TOGETA3DMODEL", GT._("To get a 3-D model you can manipulate, click {0}here{1}. Download time may be significant the first time the applet is loaded.", new String[] {"<a href=\"HREF\">", "</a>"}), + + "GT_pop_in_template.html_INSERTTITLE", GT._("Insert the page TITLE here."), + "GT_pop_in_template.html_INSERTINTRO", GT._("Insert the page INTRODUCTION here."), + + "GT_pop_in_template2.html_INSERTCAPTION", GT._("Insert a caption for {0} here.","@NAME@"), + "GT_pop_in_template2.html_INSERTADDITIONAL", GT._("Insert additonal explanatory text here. Long text will wrap around Jmol model {0}.","@NAME@"), + + "GT_script_button_template.html_INSERT", GT._("Insert your TITLE and INTRODUCTION here."), + + "GT_script_button_template2.html_BUTTONINFO", GT._("The button {0} will appear in the box below. Insert information for {0} here and below.", "@NAME@"), + "GT_script_button_template2.html_MORE", GT._("Insert more information for {0} here.", "@NAME@"), + }; + } + + private static String translate(String str) { + for (int i = 0; i < translations.length; i += 2) + str = TextFormat.simpleReplace(str, translations[i], translations[i + 1]); + return str; + } + + static String getResourceString(Object object, String name) throws IOException { URL url = (name.indexOf(".") >= 0 ? getResource(object, name) : getHtmlResource(object, name)); @@ -317,10 +352,7 @@ } catch (Exception e) { LogPanel.log(e.getMessage()); } - String str = sb.toString(); - //LogPanel.log("Loading resource " + name + "(" - // + str.length() + " bytes)"); - return str; + return translate(sb.toString()); } /* Window event code for cleanup*/ Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-28 11:36:00 UTC (rev 9795) @@ -431,7 +431,7 @@ if (made_datadir) { LogPanel.log(GT._("Using directory {0}", datadirPath)); LogPanel.log(" " + GT._("adding JmolPopIn.js")); - + writeFile(datadirPath + "/JmolPopIn.js", WebExport.getResourceString(this, "JmolPopIn.js")); for (int i = 0; i < listModel.getSize(); i++) { Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/JmolPopIn.js =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/JmolPopIn.js 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/JmolPopIn.js 2008-08-28 11:36:00 UTC (rev 9795) @@ -18,9 +18,6 @@ -- integration into Jmol application - Modified 2008.08.29 by Angel Herr\xE1ez - -- variable popInCaption added to allow localization of the pop-in caption and link - */ function addJavaScript(path, file) { @@ -29,19 +26,10 @@ function putJmolDiv(molNr, molFileName,imageFileName,appletWidth,appletHeight) { - // variable "popInCaption" is a localizable string, defined in pop_in_template.html and in any pop_in_template_xx.html - var j1 = popInCaption.indexOf("#_"); - var j2 = popInCaption.indexOf("_#"); - var cap1 = popInCaption.substring(0,j1); - var cap2 = popInCaption.substring(j1+2,j2); - var cap3 = popInCaption.substring(j2+2); - - var tx = '<table cellpadding="10"><tr><td style="color: rgb(255, 255, 51);">'; - tx += cap1; - tx += '<a href="javascript:void(popInJmol(' + molNr + ', \'' + molFileName + '\','+ appletWidth + ','+ appletHeight + '))">' + cap2 + '</a>'; - tx += cap3 + '</td></tr></table>'; - - document.writeln(tx); + var tx = '<table cellpadding="10"><tr><td style="color: rgb(255, 255, 51);">' + + 'GT_JmolPopIn.js_TOGETA3DMODEL' + + '</td></tr></table>'; + document.writeln(tx.replace(/HREF/,'javascript:void(popInJmol(' + molNr + ', \'' + molFileName + '\','+ appletWidth + ','+ appletHeight + '))')); } function popInJmol(n,fileName,width,height) { Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template.html 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template.html 2008-08-28 11:36:00 UTC (rev 9795) @@ -31,10 +31,6 @@ var jmoljarfile = "JmolApplet.jar"; // "JmolApplet.jar" is everything in one file var dataDir = "."; // where the model AND .spt files are to be found. changePathIfLocal(); - - // This phrase is localizable. The #_ _# signs are needed to mark what will become a hyperlink. - var popInCaption = 'To get a 3-D model you can manipulate, click #_here_#. Download time may be significant the first time the applet is loaded.'; - </script> <script type="text/javascript"> @@ -49,10 +45,10 @@ <body> <div id="introdiv" style="text-align: left;"> <div id="titlediv" style="text-align: center;"> -Insert Your TITLE HERE +GT_pop_in_template.html_INSERTTITLE <br /> </div> -Insert Your INTRODUCTION HERE +GT_pop_in_template.html_INSERTINTRO </div> @APPLETINFO@ Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template2.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template2.html 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template2.html 2008-08-28 11:36:00 UTC (rev 9795) @@ -16,13 +16,13 @@ </tr> <tr> <td style="vertical-align: top;"> - insert caption for @NAME@ here + GT_pop_in_template2.html_INSERTCAPTION </td> </tr> </table> </div> <div id="text@APPLETNAME@"> -Insert additonal explanatory text here. Long text will wrap around the Jmol model @NAME@. +GT_pop_in_template2.html_INSERTADDITIONAL </div> </div> </td></tr> Deleted: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template2_es.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template2_es.html 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template2_es.html 2008-08-28 11:36:00 UTC (rev 9795) @@ -1,28 +0,0 @@ -<tr><td> -<div style="margin:0; padding:0;"> </div> -<div id="div@APPLETNAME@"> -<div id="table@APPLETNAME@" class = "@CLASS@"> -<table style="text-align: left; width: @WIDTH@px;" border='1' cellpadding='2' cellspacing='2'> - <tr> - <td style="vertical-align: top; width: @WIDTH@px; height: @HEIGHT@px;"> - <div id="Jmol@I@" class="JmolDiv" style="width: @WIDTH@px; height: @HEIGHT@px; background-image:URL(@APPLETNAME@.png)"> - - <script type="text/javascript"> - putJmolDiv(@I@, "@APPLETNAME@.spt", "@APPLETNAME@.png", @WIDTH@, @HEIGHT@); - </script> - - </div> - </td> - </tr> - <tr> - <td style="vertical-align: top;"> - inserta aquí la leyenda para @NAME@</td> - </tr> -</table> -</div> -<div id="text@APPLETNAME@"> -Inserta aquí cualquier texto adicional, por ejemplo la explicación del modelo. Si el texto es largo, fluirá alrededor del modelo Jmol @NAME@. -</div> -</div> -</td></tr> - Deleted: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template_es.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template_es.html 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/pop_in_template_es.html 2008-08-28 11:36:00 UTC (rev 9795) @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<!--/* Allows to open Jmol models on request, in a div - Available from http://biomodel.uah.es/Jmol/ and http://wiki.jmol.org/ - Author: Angel Herr\xE1ez. Version 2007.04.23 - Modified by Jonathan Gutow Version 2007.07.17 - - This template is offered freely for anyone to use or adapt it, - according to Creative Commons Attribution-ShareAlike 3.0 License, - http://creativecommons.org/licenses/by-sa/3.0/ -*/--> - <meta http-equiv="content-type" content="application/xhtml+xml; charset=iso-8859-1" /> - <meta name="generator" content="Jmol, see http://www.jmol.org" /> - <meta name ="author" content = "@AUTHOR@"/> - <meta name ="keywords" content = "generated_by_Jmol_Webexport"/> - <title>@TITLE@</title> - <style type="text/css"> -.JmolDiv { padding:0.3em 0.5ex; font-size:0.9em; background-repeat:no-repeat; background-position:center;} -.floatRightDiv { padding:0.3em 0.5ex; font-size:0.9em; float:right;} -.floatLeftDiv { padding:0.3em 0.5ex; font-size:0.9em; float:left;} - </style> - <script src="JmolPopIn.js" type="text/javascript"></script> - <script type="text/javascript"> - var jmoljarpath = "@REMOTEAPPLETPATH@"; // where Jmol.jar is to be found on a server - var jmoljspath = "@REMOTEAPPLETPATH@"; // where Jmol.js is to be found on a server - var jmollocaljarpath = "@LOCALAPPLETPATH@"; // where Jmol.jar is to be found locally - var jmollocaljspath = "@LOCALAPPLETPATH@"; // where Jmol.js is to be found locally - var jmoljarfile = "JmolApplet.jar"; // "JmolApplet.jar" is everything in one file - var dataDir = "."; // where the model AND .spt files are to be found. - changePathIfLocal(); - - // This phrase is localizable. The #_ _# signs are needed to mark what will become a hyperlink. - var popInCaption = 'Para obtener un modelo en 3D que puedes manipular, pulsa #_aquí_#. El tiempo de descarga puede ser significativo la primera vez que se carga la miniaplicación.'; - - </script> - - <script type="text/javascript"> - addJavaScript(jmoljspath, "Jmol.js"); - </script> - -<script type="text/javascript"> - jmolInitialize(jmoljarpath, jmoljarfile); - jmolSetDocument(false); -</script> -</head> -<body> -<div id="introdiv" style="text-align: left;"> -<div id="titlediv" style="text-align: center;"> -Inserta aquí el TÍTULO<br /> -</div> -Inserta aquí la INTRODUCCIÓN</div> - -@APPLETINFO@ - -<table style = "width: 100%;" border="0" cellpadding="0" cellspacing="0"> -<tbody> -@APPLETDEFS@ -</tbody></table> - -<div style="margin:0; padding:0;"> </div> - -<div id="authordiv" style="text-align: right;"> -@AUTHORDATA@ -</div> -<div id="creationdiv" style="text-align: right;"> -@CREATIONDATA@ -</div> -<div id="logdiv" style="text-align: right; display:none"> -@LOGDATA@ -</div> - -</body> -</html> Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template.html 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template.html 2008-08-28 11:36:00 UTC (rev 9795) @@ -66,7 +66,7 @@ <div id="mainPane" class="textPanels"> <div id="mainContent" class="content"> -Insert your TITLE and INTRODUCTION here. +GT_script_button_template.html_INSERT <br /> @APPLETDEFS@ Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2.html 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2.html 2008-08-28 11:36:00 UTC (rev 9795) @@ -1,4 +1,4 @@ -The button @NAME@ will appear in the box below. Insert info for @NAME@ here and below. +GT_script_button_template2.html_BUTTONINFO <table style="text-align: center; width: 100%" border="1" cellpadding="2" cellspacing="2"><tr><td> <script type="text/javascript"> @@ -8,5 +8,5 @@ </script> </td></tr></table> - More info for @NAME@ <br/> + GT_script_button_template2.html_MORE <br/> Deleted: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2_es.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2_es.html 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2_es.html 2008-08-28 11:36:00 UTC (rev 9795) @@ -1,12 +0,0 @@ -El botón @NAME@ se mostrará en el recuadro de aquí abajo. Inserta la información de @NAME@ aquí y más abajo. -<table style="text-align: center; width: 100%" border="1" cellpadding="2" cellspacing="2"><tr><td> - - <script type="text/javascript"> - - document.write(jmolButton("script @APPLETNAME0@.spt", "@LABEL@")); - - </script> - -</td></tr></table> - Más información para @NAME@ <br/> - Deleted: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template_es.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template_es.html 2008-08-28 09:35:05 UTC (rev 9794) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template_es.html 2008-08-28 11:36:00 UTC (rev 9795) @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<!--/* Allows to open Jmol models on request, in a div - Available from http://biomodel.uah.es/Jmol/ and http://wiki.jmol.org/ - Author: Angel Herr\xE1ez. Version 2007.04.23 - Modified by Jonathan Gutow Version 2007.07.17 - - This template is offered freely for anyone to use or adapt it, - according to Creative Commons Attribution-ShareAlike 3.0 License, - http://creativecommons.org/licenses/by-sa/3.0/ -*/--> - <meta http-equiv="content-type" content="application/xhtml+xml; charset=iso-8859-1" /> - <meta name="generator" content="Jmol, see http://www.jmol.org" /> - <meta name ="author" content = "@AUTHOR@"/> - <meta name ="keywords" content = "generated_by_Jmol_Webexport"/> - <title>@TITLE@</title> - <style type="text/css"> -/* These are important, don't change: */ -html, body { height:100%; overflow:hidden; margin:0; padding:0; } -.JmolPanels { position:absolute; overflow:hidden;} -.textPanels { position:absolute; overflow:auto; } -#JmolPane {left:@LEFTPERCENT@%; width: @WIDTHPERCENT@%; top:0px; height:100%; } -#mainPane { left:0px; width:@LEFTPERCENT@%; top:0px; height:100%; } -#JmolDiv {width:100%; height:100%;} -#Jmol0 {width:100%; height:100%;} -/* Don't add margin or padding to textPane; if needed, use an inner div with desired style (like 'contents' below) */ - -/* These are aesthetic, can be customized: */ -.content { padding:0.5em 1ex; } -.textPanels { background-color:rgb(102, 255, 255); } - </style> - - <script src="JmolPopIn.js" type="text/javascript"></script> - <script type="text/javascript"> - var jmoljarpath = "@REMOTEAPPLETPATH@"; // where Jmol.jar is to be found on a server - var jmoljspath = "@REMOTEAPPLETPATH@"; // where Jmol.js is to be found on a server - var jmollocaljarpath = "@LOCALAPPLETPATH@"; // where Jmol.jar is to be found locally - var jmollocaljspath = "@LOCALAPPLETPATH@"; // where Jmol.js is to be found locally - var jmoljarfile = "JmolApplet.jar"; // "JmolApplet.jar" is everything in one file - var dataDir = "."; // where the model AND .spt files are to be found. - changePathIfLocal(); - </script> - -<script type="text/javascript"> - addJavaScript(jmoljspath, "Jmol.js"); -</script> - -<script type='text/javascript'> - jmolInitialize(jmoljarpath, jmoljarfile); - jmolSetDocument(0); -</script> - -</head> -<body style="color: rgb(0, 0, 0); background-color: rgb(102, 255, 255);" - onload="scriptbuttonJmol('@APPLETNAME0@.spt')"> - -<div id="JmolPane" class="JmolPanels"> - <div id="Jmol0" class="JmolDiv"> - <img src="@APPLETNAME0@.png" alt="still of jmol image" style="height:100%; width:100%"/> - </div> -</div> - - -<div id="mainPane" class="textPanels"> -<div id="mainContent" class="content"> -Inserta aquí el TÍTULO y la INTRODUCCIÓN. -<br /> - -@APPLETDEFS@ - -<br /> - -<div id="authordiv" style="text-align: right;"> -@AUTHORDATA@ -</div> -<div id="creationdiv" style="text-align: right;"> -@CREATIONDATA@ -</div> -<div id="logdiv" style="display:none"> -@LOGDATA@ -</div> - -</div><!--content--> -</div><!--mainPane--> - -</body> -</html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ahe...@us...> - 2008-08-28 12:54:23
|
Revision: 9797 http://jmol.svn.sourceforge.net/jmol/?rev=9797&view=rev Author: aherraez Date: 2008-08-28 12:54:20 +0000 (Thu, 28 Aug 2008) Log Message: ----------- Spanish Modified Paths: -------------- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po trunk/Jmol/src/org/openscience/jmol/app/webexport/html/WebExportIntro_es.html Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po 2008-08-28 11:37:15 UTC (rev 9796) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po 2008-08-28 12:54:20 UTC (rev 9797) @@ -9,7 +9,7 @@ "Project-Id-Version: Jmol 10\n" "Report-Msgid-Bugs-To: jmo...@li...\n" "POT-Creation-Date: 2008-08-28 03:20+0200\n" -"PO-Revision-Date: 2008-08-28 11:45+0100\n" +"PO-Revision-Date: 2008-08-28 15:04+0100\n" "Last-Translator: Angel Herráez <ahe...@us...>\n" "Language-Team: Spanish <Jmo...@li...>\n" "MIME-Version: 1.0\n" @@ -1253,11 +1253,6 @@ msgid "Attempt to make scratch directory failed." msgstr "No se ha podido crear la carpeta temporal." -#: org/openscience/jmol/app/webexport/JmolInstance.java:124 -#, java-format -msgid "Failed to delete scratch file {0}." -msgstr "No se ha podido borrar el archivo temporal {0}." - #: org/openscience/jmol/app/webexport/LogPanel.java:52 msgid "Log and Error Messages:" msgstr "Bitácora y mensajes de error:" @@ -1278,6 +1273,16 @@ msgid "height:" msgstr "Alto:" +#: org/openscience/jmol/app/webexport/PopInJmol.java:79 +#, java-format +msgid "insert caption for {0} here" +msgstr "inserta aquí la leyenda para {0}" + +#: org/openscience/jmol/app/webexport/PopInJmol.java:82 +#, java-format +msgid "insert note for {0} here" +msgstr "inserta aquí la nota para {0}" + #: org/openscience/jmol/app/webexport/ScriptButtons.java:39 msgid "These names will be used for button labels" msgstr "Estos nombres se pondrán en los botones" @@ -1286,22 +1291,77 @@ msgid "% of window for applet width:" msgstr "Ancho de Jmol (% de la ventana):" -#: org/openscience/jmol/app/webexport/WebExport.java:96 -msgid "Couldn't find file: WebExportIntro.html" -msgstr "No se ha podido encontrar el archivo WebExportIntro.html" +#: org/openscience/jmol/app/webexport/WebExport.java:81 +#: org/openscience/jmol/app/webexport/WebExport.java:196 +#: org/openscience/jmol/app/webexport/WebExport.java:266 +msgid "Jmol Web Page Maker" +msgstr "Generador de páginas web de Jmol" -#: org/openscience/jmol/app/webexport/WebExport.java:115 +#: org/openscience/jmol/app/webexport/WebExport.java:100 +msgid "Couldn't find file: {0}" +msgstr "No se ha podido encontrar el archivo {0}" + +#: org/openscience/jmol/app/webexport/WebExport.java:119 msgid "Introduction" msgstr "Introducción" -#: org/openscience/jmol/app/webexport/WebExport.java:143 +#: org/openscience/jmol/app/webexport/WebExport.java:129 +msgid "Pop-In Jmol" +msgstr "Página Pop-In" + +#: org/openscience/jmol/app/webexport/WebExport.java:130 +msgid "ScriptButton Jmol" +msgstr "Página ScriptButton" + +#: org/openscience/jmol/app/webexport/WebExport.java:147 msgid "Log" msgstr "Bitácora" -#: org/openscience/jmol/app/webexport/WebExport.java:186 -msgid "Jmol Web Page Maker" -msgstr "Generador de páginas web de Jmol" +#: org/openscience/jmol/app/webexport/WebExport.java:163 +msgid "Page skeleton and JavaScript generated by export to web function of" +msgstr "Armazón de la página y JavaScript generados por la función exportar a página web de" +#: org/openscience/jmol/app/webexport/WebExport.java:168 +msgid "on" +msgstr "el" + +#: org/openscience/jmol/app/webexport/WebExport.java:311 +#, java-format +msgid "To get a 3-D model you can manipulate, click {0}here{1}. Download time may be significant the first time the applet is loaded." +msgstr "Para obtener un modelo en 3D que puedes manipular, pulsa {0}aquí{1}. El tiempo de descarga puede ser significativo la primera vez que se carga la miniaplicación." + +#: org/openscience/jmol/app/webexport/WebExport.java:313 +msgid "Insert the page TITLE here." +msgstr "Inserta aquí el TÍTULO." + +#: org/openscience/jmol/app/webexport/WebExport.java:314 +msgid "Insert the page INTRODUCTION here." +msgstr "Inserta aquí la INTRODUCCIÓN." + +#: org/openscience/jmol/app/webexport/WebExport.java:316 +#, java-format +msgid "Insert a caption for {0} here." +msgstr "Inserta aquí la leyenda para {0}" + +#: org/openscience/jmol/app/webexport/WebExport.java:317 +#, java-format +msgid "Insert additonal explanatory text here. Long text will wrap around Jmol model {0}." +msgstr "Inserta aquí cualquier texto adicional, por ejemplo la explicación del modelo. Si el texto es largo, fluirá alrededor del modelo Jmol {0}." + +#: org/openscience/jmol/app/webexport/WebExport.java:319 +msgid "Insert your TITLE and INTRODUCTION here." +msgstr "Inserta aquí el TÍTULO y la INTRODUCCIÓN." + +#: org/openscience/jmol/app/webexport/WebExport.java:321 +#, java-format +msgid "The button {0} will appear in the box below. Insert information for {0} here and below." +msgstr "El botón {0} se mostrará en el recuadro de aquí abajo. Inserta la información de {0} aquí y más abajo." + +#: org/openscience/jmol/app/webexport/WebExport.java:322 +#, java-format +msgid "Insert more information for {0} here." +msgstr "Más información para {0}" + #: org/openscience/jmol/app/webexport/WebPanel.java:111 msgid "A web page containing Jmol applets" msgstr "Página web con miniaplicaciones Jmol" @@ -1331,13 +1391,10 @@ msgstr "Ayuda / Instrucciones" #: org/openscience/jmol/app/webexport/WebPanel.java:204 +#: org/openscience/jmol/app/webexport/WebPanel.java:212 msgid "Cartoon of Page" msgstr "Aspecto de la página" -#: org/openscience/jmol/app/webexport/WebPanel.java:212 -msgid "Cartoon of Page:" -msgstr "Aspecto de la página:" - #: org/openscience/jmol/app/webexport/WebPanel.java:217 msgid "Save HTML as..." msgstr "Guardar HTML como..." @@ -1359,7 +1416,7 @@ msgstr "Título de la ventana para esta página:" #: org/openscience/jmol/app/webexport/WebPanel.java:306 -msgid "Give the occurence of Jmol a name:" +msgid "Give the occurrence of Jmol a name:" msgstr "Nombra esta vista de Jmol:" #: org/openscience/jmol/app/webexport/WebPanel.java:326 @@ -1390,22 +1447,36 @@ msgstr "Usando la carpeta {0}" #: org/openscience/jmol/app/webexport/WebPanel.java:433 -msgid " adding JmolPopIn.js" -msgstr " añadiendo JmolPopIn.js" +msgid "adding JmolPopIn.js" +msgstr "añadiendo JmolPopIn.js" #: org/openscience/jmol/app/webexport/WebPanel.java:442 #, java-format -msgid " ...adding {0}.png" -msgstr " ...añadiendo {0}.png" +msgid "adding {0}.png" +msgstr "añadiendo {0}.png" +#: org/openscience/jmol/app/webexport/WebPanel.java:467 +#, java-format +msgid "adding {0}.spt" +msgstr "añadiendo {0}.spt" + +#: org/openscience/jmol/app/webexport/WebPanel.java:498 +msgid "Based on template by A. Herráez as modified by J. Gutow" +msgstr "Basado en una plantilla de A. Herráez modificada por J. Gutow" + +#: org/openscience/jmol/app/webexport/WebPanel.java:501 +#, java-format +msgid "creating {0}" +msgstr "creando {0}" + #: org/openscience/jmol/app/webexport/WebPanel.java:532 #, java-format msgid "" -" ...copying\n" +"copying\n" "{0}\n" " to" msgstr "" -" ...copiando\n" +"copiando\n" "{0}\n" " a" @@ -1417,6 +1488,6 @@ msgstr "No se ha podido encontrar o abrir {0}" #: org/openscience/jmol/app/webexport/WebPanel.java:574 -msgid " ...Compressing large data file to\n" -msgstr " ...Comprimiendo archivo de datos grande a\n" +msgid "compressing large data file to" +msgstr "comprimiendo archivo de datos grande a" Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/WebExportIntro_es.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/WebExportIntro_es.html 2008-08-28 11:37:15 UTC (rev 9796) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/WebExportIntro_es.html 2008-08-28 12:54:20 UTC (rev 9797) @@ -9,11 +9,11 @@ name="description"> </head> <body> -<p>Este cuadro de diálogo, el “Generador de páginas web de Jmol”, produce de forma automatizada páginas web sencillas que muestran vistas que diseñas usando la aplicación Jmol. Puedes utilizar un editor de páginas web para cambiar el texto y contenido de las páginas así creadas. Hay instrucciones más detalladas para cada una de +<p>Este cuadro de diálogo, el “Generador de páginas web de Jmol”, produce de forma automatizada páginas web sencillas que incluyen vistas diseñadas por ti usando la aplicación Jmol. Puedes utilizar luego un editor de páginas web para cambiar el texto y el contenido de las páginas así creadas. Hay instrucciones más detalladas para cada una de las variedades de página en la pestaña respectiva. - Se incluen también las instrucciones para que tu sitio web utilice la miniaplicación Jmol, de modo que todo el mundo pueda acceder a las páginas web que crees. - Eliges el tipo de página que deseas pulsando en la pestaña correspondiente aquí arriba. Las variantes disponibles son: </p> + Se incluyen también las instrucciones para que tu sitio web utilice la miniaplicación Jmol, de modo que todo el mundo pueda acceder a las páginas web que has creado. + Puedes elegir el tipo de página que deseas pulsando en la pestaña correspondiente aquí arriba. Las variantes disponibles son: </p> <ol> <li>“Pop-in”: esta plantilla permite crear una página con varias imágenes de las vistas elegidas en Jmol. Cuando un usuario pulse en una de estas imágenes, ésta se convierte en una miniaplicación interactiva Jmol en la que el modelo se puede girar, ampliar, etc.</li> <li>“ScriptButton”: esta plantilla muestra una única miniaplicación Jmol en la zona derecha de la ventana del navegador. A la izquierda queda una región, con barra de desplazamiento vertical, que contiene los botones mediante los cuales el usuario puede seleccionar las vistas. </li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ahe...@us...> - 2008-08-29 00:04:29
|
Revision: 9803 http://jmol.svn.sourceforge.net/jmol/?rev=9803&view=rev Author: aherraez Date: 2008-08-29 00:04:26 +0000 (Fri, 29 Aug 2008) Log Message: ----------- fusion of GT terms that are equal or very similar (to reduce translation effort) Modified Paths: -------------- trunk/Jmol/src/org/jmol/popup/JmolPopup.java trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java trunk/Jmol/src/org/openscience/jmol/app/PovrayDialog.java Modified: trunk/Jmol/src/org/jmol/popup/JmolPopup.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/JmolPopup.java 2008-08-28 19:58:40 UTC (rev 9802) +++ trunk/Jmol/src/org/jmol/popup/JmolPopup.java 2008-08-29 00:04:26 UTC (rev 9803) @@ -453,7 +453,7 @@ removeAll(menu); if (modelCount < 2) return; - addCheckboxMenuItem(menu, GT._("all", true), "frame 0 ##", null, + addCheckboxMenuItem(menu, GT._("All", true), "frame 0 ##", null, (modelIndex < 0)); Object subMenu = menu; @@ -493,7 +493,7 @@ setLabel(menu, GT._(getMenuText("configurationMenuText"), nAltLocs, true)); removeAll(menu); String script = "hide none ##CONFIG"; - addCheckboxMenuItem(menu, GT._("all", true), script, null, + addCheckboxMenuItem(menu, GT._("All", true), script, null, (updateMode == UPDATE_CONFIG && configurationSelected.equals(script))); for (int i = 0; i < nAltLocs; i++) { script = "configuration " + (i + 1) + "; hide thisModel and not selected ##CONFIG"; Modified: trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java 2008-08-28 19:58:40 UTC (rev 9802) +++ trunk/Jmol/src/org/jmol/popup/PopupResourceBundle.java 2008-08-29 00:04:26 UTC (rev 9803) @@ -743,7 +743,7 @@ "[color_bonds]Menu", GT._("Bonds"), "[color_hbonds]Menu", GT._("Hydrogen Bonds"), "[color_ssbonds]Menu", GT._("Disulfide Bonds"), - "colorPDBStructuresMenu", GT._("Structure"), + "colorPDBStructuresMenu", GT._("Structures"), "[color_backbone]Menu", GT._("Backbone"), "[color_trace]Menu", GT._("Trace"), "[color_cartoon]sMenu", GT._("Cartoon"), @@ -752,11 +752,11 @@ "[color_strands]Menu", GT._("Strands"), "[color_labels]Menu", GT._("Labels"), "[color_background]Menu", GT._("Background"), - "[color_isosurface]Menu", GT._("Surface"), + "[color_isosurface]Menu", GT._("Surfaces"), "[color_vectors]Menu", GT._("Vectors"), "[color_axes]Menu", GT._("Axes"), "[color_boundbox]Menu", GT._("Boundbox"), - "[color_UNITCELL]Menu", GT._("Unitcell"), + "[color_UNITCELL]Menu", GT._("Unit cell"), "zoomMenu", GT._("Zoom"), "zoom50", "50%", @@ -808,7 +808,7 @@ "animfps30", "30", "animfps50", "50", - "measureMenu", GT._("Measurement"), + "measureMenu", GT._("Measurements"), "measureOff", GT._("Double-Click begins and ends all measurements"), "measureDistance", GT._("Click for distance measurement"), "measureAngle", GT._("Click for angle measurement"), @@ -839,7 +839,7 @@ "showFileHeader", GT._("File Header"), "showHistory", GT._("History"), "showIsosurface", GT._("Isosurface JVXL data"), - "showMeasure", GT._("Measure"), + "showMeasure", GT._("Measurements"), "showMo", GT._("Molecular orbital JVXL data"), "showModel", GT._("Model"), "showOrient", GT._("Orientation"), @@ -870,7 +870,7 @@ "[set_axes]Menu", GT._("Axes"), "[set_boundbox]Menu", GT._("Boundbox"), - "[set_UNITCELL]Menu", GT._("Unitcell"), + "[set_UNITCELL]Menu", GT._("Unit cell"), "off#axes", GT._("Hide"), "dotted", GT._("Dotted"), @@ -893,9 +893,9 @@ "showHydrogensCheckbox", GT._("Show Hydrogens"), "showMeasurementsCheckbox", GT._("Show Measurements"), "perspectiveDepthCheckbox", GT._("Perspective Depth"), - "showBoundBoxCheckbox", GT._("Bound Box"), + "showBoundBoxCheckbox", GT._("Boundbox"), "showAxesCheckbox", GT._("Axes"), - "showUNITCELLCheckbox", GT._("Unit Cell"), + "showUNITCELLCheckbox", GT._("Unit cell"), "colorrasmolCheckbox", GT._("RasMol Colors"), "aboutComputedMenu", GT._("About Jmol"), Modified: trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java 2008-08-28 19:58:40 UTC (rev 9802) +++ trunk/Jmol/src/org/openscience/jmol/app/GuiMap.java 2008-08-29 00:04:26 UTC (rev 9803) @@ -58,7 +58,7 @@ labels.put("toweb", GT._("Export to &Web Page...")); labels.put("towebTip", GT._("Export one or more views to a web page.")); labels.put("povray", GT._("Render in POV-&Ray...")); - labels.put("povrayTip", GT._("Render in pov-ray.")); + labels.put("povrayTip", GT._("Render in POV-Ray")); labels.put("write", GT._("Write &State...")); labels.put("writeTip", GT._("Save current view as a Jmol state script.")); labels.put("print", GT._("&Print...")); @@ -91,10 +91,10 @@ labels.put("display", GT._("&Display")); labels.put("atomMenu", GT._("&Atom")); labels.put("atomNoneScript", GT._("&None")); - labels.put("atom15Script", GT._("{0}% vanderWaals", "15")); - labels.put("atom20Script", GT._("{0}% vanderWaals", "20")); - labels.put("atom25Script", GT._("{0}% vanderWaals", "25")); - labels.put("atom100Script", GT._("{0}% vanderWaals","100")); + labels.put("atom15Script", GT._("{0}% van der Waals", "15")); + labels.put("atom20Script", GT._("{0}% van der Waals", "20")); + labels.put("atom25Script", GT._("{0}% van der Waals", "25")); + labels.put("atom100Script", GT._("{0}% van der Waals","100")); labels.put("bondMenu", GT._("&Bond")); labels.put("bondNoneScript", GT._("&None")); labels.put("bondWireframeScript", GT._("&Wireframe")); @@ -140,7 +140,7 @@ labels.put("transform", GT._("Tr&ansform...")); labels.put("definecenter", GT._("Define &Center")); labels.put("tools", GT._("&Tools")); - labels.put("viewMeasurementTable", GT._("&Measurements...")); + labels.put("viewMeasurementTable", GT._("&Measurements")+"..."); labels.put("viewMeasurementTableTip", GT._("Click atoms to measure distances")); labels.put("distanceUnitsMenu", GT._("Distance &Units")); labels.put("distanceNanometersScript", GT._("&Nanometers 1E-9")); Modified: trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java 2008-08-28 19:58:40 UTC (rev 9802) +++ trunk/Jmol/src/org/openscience/jmol/app/MeasurementTable.java 2008-08-29 00:04:26 UTC (rev 9803) @@ -62,7 +62,7 @@ */ public MeasurementTable(JmolViewer viewer, JFrame parentFrame) { - super(parentFrame, GT._("Measurements..."), false); + super(parentFrame, GT._("Measurements"), false); this.viewer = viewer; JPanel container = new JPanel(); Modified: trunk/Jmol/src/org/openscience/jmol/app/PovrayDialog.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/PovrayDialog.java 2008-08-28 19:58:40 UTC (rev 9802) +++ trunk/Jmol/src/org/openscience/jmol/app/PovrayDialog.java 2008-08-29 00:04:26 UTC (rev 9803) @@ -148,11 +148,11 @@ //GUI for save name selection Box justSavingBox = Box.createVerticalBox(); - text = GT._("Jmol-to-POV-Ray Conversion"); + text = GT._("Conversion from Jmol to POV-Ray"); justSavingBox.setBorder(new TitledBorder(text)); Box saveBox = Box.createHorizontalBox(); - text = GT._("Filename"); + text = GT._("File Name:"); saveBox.setBorder(new TitledBorder(text)); text = GT._("'caffeine.pov' -> 'caffeine.pov', 'caffeine.pov.ini', 'caffeine.pov.spt'"); saveBox.setToolTipText(text); @@ -240,7 +240,7 @@ Box displayBox = Box.createHorizontalBox(); text = GT._("Display While Rendering"); displayWhileRenderingCheck = new JCheckBox(text, true); - text = GT._("Should povray attempt to display while rendering?"); + text = GT._("Should POV-Ray attempt to display while rendering?"); displayWhileRenderingCheck.setToolTipText(text); displayWhileRenderingCheck.addItemListener(updateItemListener); displayBox.add(displayWhileRenderingCheck); @@ -263,7 +263,7 @@ imageBox.add(Box.createHorizontalStrut(10)); Box imageSizeDetailBox = Box.createVerticalBox(); Box imageSizeXYBox = Box.createHorizontalBox(); - text = GT._("Width : "); + text = GT._("width:")+" "; imageSizeWidth = new JLabel(text); text = GT._("Image width"); imageSizeWidth.setToolTipText(text); @@ -280,7 +280,7 @@ ); imageSizeXYBox.add(imageSizeTextWidth); imageSizeXYBox.add(Box.createHorizontalStrut(10)); - text = GT._("Height : "); + text = GT._("height:")+" "; imageSizeHeight = new JLabel(text); text = GT._("Image height"); imageSizeHeight.setToolTipText(text); @@ -408,7 +408,7 @@ mosaicBox.add(Box.createHorizontalStrut(10)); text = GT._("Start size : "); mosaicPreviewStart = new JLabel(text); - text = GT._("Inital size of the tiles"); + text = GT._("Initial size of the tiles"); mosaicPreviewStart.setToolTipText(text); mosaicBox.add(mosaicPreviewStart); mosaicPreviewComboStart = new JComboBox(); @@ -447,9 +447,9 @@ //GUI for povray path selection Box povrayPathBox = Box.createHorizontalBox(); - text = GT._("POV-Ray Executable Location"); + text = GT._("Location of the POV-Ray Executable"); povrayPathBox.setBorder(new TitledBorder(text)); - text = GT._("Location of the povray Executable"); + text = GT._("Location of the POV-Ray Executable"); povrayPathBox.setToolTipText(text); povrayPathLabel = new JTextField(""); povrayPathLabel.setEditable(false); @@ -488,7 +488,7 @@ buttonBox.add(Box.createGlue()); text = GT._("Go!"); goButton = new JButton(text); - text = GT._("Save file and possibly launch povray"); + text = GT._("Save file and possibly launch POV-Ray"); goButton.setToolTipText(text); goButton.addActionListener(new ActionListener() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-30 16:56:24
|
Revision: 9814 http://jmol.svn.sourceforge.net/jmol/?rev=9814&view=rev Author: hansonr Date: 2008-08-30 16:56:21 +0000 (Sat, 30 Aug 2008) Log Message: ----------- automatic GT.escapeHTML() conversion of UTF-8 (2-byte) codes into &#nnn; notation Modified Paths: -------------- trunk/Jmol/src/org/jmol/i18n/GT.java trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/i18n/GT.java =================================================================== --- trunk/Jmol/src/org/jmol/i18n/GT.java 2008-08-30 13:31:21 UTC (rev 9813) +++ trunk/Jmol/src/org/jmol/i18n/GT.java 2008-08-30 16:56:21 UTC (rev 9814) @@ -415,4 +415,13 @@ return trans; } + public static String escapeHTML(String msg) { + char ch; + for (int i = msg.length(); --i >= 0;) + if ((ch = msg.charAt(i)) > 0x7F) { + msg = msg.substring(0, i) + + "&#" + ((int)ch) + ";" + msg.substring(i + 1); + } + return msg; + } } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java 2008-08-30 13:31:21 UTC (rev 9813) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java 2008-08-30 16:56:21 UTC (rev 9814) @@ -76,10 +76,10 @@ int JmolSizeH = instance.height; if (useAppletJS) { appletInfoDivs += "\n<div id=\"" + javaname + "_caption\">\n" - + GT._("Insert a caption for {0} here.", name) + + GT.escapeHTML(GT._("insert a caption for {0} here.", name)) + "\n</div>"; appletInfoDivs += "\n<div id=\"" + javaname + "_note\">\n" - + GT._("Insert a note for {0} here.", name) + + GT.escapeHTML(GT._("insert a note for {0} here.", name)) + "\n</div>"; appletDefs.append("\naddJmolDiv(" + i + ",'" + divClass + "','" + javaname + "'," + JmolSizeW + "," + JmolSizeH + ")"); Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-30 13:31:21 UTC (rev 9813) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-30 16:56:21 UTC (rev 9814) @@ -308,18 +308,18 @@ private static void setTranslations() { // for all templates and JmolPopIn.js translations = new String[] { - "GT_JmolPopIn.js_TOGETA3DMODEL", GT._("To get a 3-D model you can manipulate, click {0}here{1}. Download time may be significant the first time the applet is loaded.", new String[] {"<a href=\"HREF\">", "</a>"}), + "GT_JmolPopIn.js_TOGETA3DMODEL", GT.escapeHTML(GT._("To get a 3-D model you can manipulate, click {0}here{1}. Download time may be significant the first time the applet is loaded.", new String[] {"<a href=\"HREF\">", "</a>"})), - "GT_pop_in_template.html_INSERTTITLE", GT._("Insert the page TITLE here."), - "GT_pop_in_template.html_INSERTINTRO", GT._("Insert the page INTRODUCTION here."), + "GT_pop_in_template.html_INSERTTITLE", GT.escapeHTML(GT._("Insert the page TITLE here.")), + "GT_pop_in_template.html_INSERTINTRO", GT.escapeHTML(GT._("Insert the page INTRODUCTION here.")), - "GT_pop_in_template2.html_INSERTCAPTION", GT._("Insert a caption for {0} here.","@NAME@"), - "GT_pop_in_template2.html_INSERTADDITIONAL", GT._("Insert additonal explanatory text here. Long text will wrap around Jmol model {0}.","@NAME@"), + "GT_pop_in_template2.html_INSERTCAPTION", GT.escapeHTML(GT._("Insert a caption for {0} here.","@NAME@")), + "GT_pop_in_template2.html_INSERTADDITIONAL", GT.escapeHTML(GT._("Insert additonal explanatory text here. Long text will wrap around Jmol model {0}.","@NAME@")), - "GT_script_button_template.html_INSERT", GT._("Insert your TITLE and INTRODUCTION here."), + "GT_script_button_template.html_INSERT", GT.escapeHTML(GT._("Insert your TITLE and INTRODUCTION here.")), - "GT_script_button_template2.html_BUTTONINFO", GT._("The button {0} will appear in the box below. Insert information for {0} here and below.", "@NAME@"), - "GT_script_button_template2.html_MORE", GT._("Insert more information for {0} here.", "@NAME@"), + "GT_script_button_template2.html_BUTTONINFO", GT.escapeHTML(GT._("The button {0} will appear in the box below. Insert information for {0} here and below.", "@NAME@")), + "GT_script_button_template2.html_MORE", GT.escapeHTML(GT._("Insert more information for {0} here.", "@NAME@")), }; } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-30 13:31:21 UTC (rev 9813) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-30 16:56:21 UTC (rev 9814) @@ -478,7 +478,7 @@ .getElementAt(i)); html = TextFormat.simpleReplace(html, "@AUTHOR@", pageAuthorName .getText()); - html = TextFormat.simpleReplace(html, "@TITLE@", webPageTitle.getText()); + html = TextFormat.simpleReplace(html, "@TITLE@", GT.escapeHTML(webPageTitle.getText())); html = TextFormat.simpleReplace(html, "@REMOTEAPPLETPATH@", remoteAppletPath.getText()); html = TextFormat.simpleReplace(html, "@LOCALAPPLETPATH@", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ahe...@us...> - 2008-08-31 15:08:16
|
Revision: 9833 http://jmol.svn.sourceforge.net/jmol/?rev=9833&view=rev Author: aherraez Date: 2008-08-31 15:08:05 +0000 (Sun, 31 Aug 2008) Log Message: ----------- improved localization terms and update of Spanish translation Modified Paths: -------------- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po 2008-08-31 13:50:03 UTC (rev 9832) +++ trunk/Jmol/src/org/jmol/translation/Jmol/Jmol-es.po 2008-08-31 15:08:05 UTC (rev 9833) @@ -9,7 +9,7 @@ "Project-Id-Version: Jmol 10\n" "Report-Msgid-Bugs-To: jmo...@li...\n" "POT-Creation-Date: 2008-08-31 12:48+0200\n" -"PO-Revision-Date: 2008-08-30 21:59+0100\n" +"PO-Revision-Date: 2008-08-31 17:17+0100\n" "Last-Translator: Angel Herráez <ahe...@us...>\n" "Language-Team: Spanish <Jmo...@li...>\n" "MIME-Version: 1.0\n" @@ -642,9 +642,7 @@ #: org/openscience/jmol/app/GuiMap.java:187 msgid "Select a set of atoms using SHIFT-LEFT- DRAG." -msgstr "" -"Selecciona un grupo de átomos pulsando Mayús. y arrastrando con el botón " -"principal" +msgstr "Selecciona un grupo de átomos pulsando Mayús. y arrastrando con el botón principal" #: org/openscience/jmol/app/GuiMap.java:188 msgid "Return molecule to home position." @@ -927,12 +925,8 @@ msgstr "ancho x alto de ventana, p.ej. {0}" #: org/openscience/jmol/app/Jmol.java:519 -msgid "" -"JPG image quality (1-100; default 75) or PNG image compression (0-9; default " -"2, maximum compression 9)" -msgstr "" -"Calidad de imagen JPG (de 1 a 100; 75 por defecto) o compresión de imagen " -"PNG (de 0 a 9; 2 por defecto; 9 es máxima compresión)" +msgid "JPG image quality (1-100; default 75) or PNG image compression (0-9; default 2, maximum compression 9)" +msgstr "Calidad de imagen JPG (de 1 a 100; 75 por defecto) o compresión de imagen PNG (de 0 a 9; 2 por defecto; 9 es máxima compresión)" #: org/openscience/jmol/app/Jmol.java:525 #, java-format @@ -997,8 +991,7 @@ msgstr "Conversión desde Jmol a POV-Ray" #: org/openscience/jmol/app/PovrayDialog.java:157 -msgid "" -"'caffeine.pov' -> 'caffeine.pov', 'caffeine.pov.ini', 'caffeine.pov.spt'" +msgid "'caffeine.pov' -> 'caffeine.pov', 'caffeine.pov.ini', 'caffeine.pov.spt'" msgstr "'cafeina.pov' -> 'cafeina.pov', 'cafeina.pov.ini', 'cafeina.pov.spt'" #: org/openscience/jmol/app/PovrayDialog.java:167 @@ -1027,8 +1020,7 @@ #: org/openscience/jmol/app/PovrayDialog.java:243 msgid "Should POV-Ray attempt to display while rendering?" -msgstr "" -"¿Debe POV-Ray intentar mostrar mientras se está generando la representación?" +msgstr "¿Debe POV-Ray intentar mostrar mientras se está generando la representación?" #: org/openscience/jmol/app/PovrayDialog.java:266 msgid "width:" @@ -1264,14 +1256,14 @@ msgstr "Ancho de Jmol:" #: org/openscience/jmol/app/webexport/PopInJmol.java:79 -#, fuzzy, java-format +#, java-format msgid "insert a caption for {0} here." -msgstr "Inserta aquí una leyenda para {0}." +msgstr "inserta aquí una leyenda para {0}." #: org/openscience/jmol/app/webexport/PopInJmol.java:82 -#, fuzzy, java-format +#, java-format msgid "insert a note for {0} here." -msgstr "Inserta aquí una nota para {0}" +msgstr "inserta aquí una nota para {0}." #: org/openscience/jmol/app/webexport/ScriptButtons.java:39 msgid "These names will be used for button labels" @@ -1282,8 +1274,8 @@ msgstr "Ancho de Jmol (% de la ventana):" #: org/openscience/jmol/app/webexport/WebExport.java:81 -#: org/openscience/jmol/app/webexport/WebExport.java:196 -#: org/openscience/jmol/app/webexport/WebExport.java:266 +#: org/openscience/jmol/app/webexport/WebExport.java:194 +#: org/openscience/jmol/app/webexport/WebExport.java:264 msgid "Jmol Web Page Maker" msgstr "Generador de páginas web de Jmol" @@ -1308,61 +1300,43 @@ msgstr "Bitácora" #: org/openscience/jmol/app/webexport/WebExport.java:163 -msgid "Page skeleton and JavaScript generated by export to web function of" -msgstr "" -"Armazón de la página y JavaScript generados por la función exportar a página " -"web de" +#, java-format +msgid "Page skeleton and JavaScript generated by export to web function using {0} on {1}" +msgstr "Armazón de la página y JavaScript generados por la función exportar a página web de {0} el {1}" -#: org/openscience/jmol/app/webexport/WebExport.java:168 -msgid "on" -msgstr "el" - -#: org/openscience/jmol/app/webexport/WebExport.java:311 +#: org/openscience/jmol/app/webexport/WebExport.java:309 #, java-format -msgid "" -"To get a 3-D model you can manipulate, click {0}here{1}. Download time may " -"be significant the first time the applet is loaded." -msgstr "" -"Para obtener un modelo tridimensional que puedes manejar, pulsa {0}aquí{1}. " -"El tiempo de descarga puede ser considerable la primera vez que se carga la " -"miniaplicación." +msgid "To get a 3-D model you can manipulate, click {0}here{1}. Download time may be significant the first time the applet is loaded." +msgstr "Para obtener un modelo tridimensional que puedes manejar, pulsa {0}aquí{1}. El tiempo de descarga puede ser considerable la primera vez que se carga la miniaplicación." -#: org/openscience/jmol/app/webexport/WebExport.java:313 +#: org/openscience/jmol/app/webexport/WebExport.java:311 msgid "Insert the page TITLE here." msgstr "Inserta aquí el TÍTULO." -#: org/openscience/jmol/app/webexport/WebExport.java:314 +#: org/openscience/jmol/app/webexport/WebExport.java:312 msgid "Insert the page INTRODUCTION here." msgstr "Inserta aquí la INTRODUCCIÓN." -#: org/openscience/jmol/app/webexport/WebExport.java:316 +#: org/openscience/jmol/app/webexport/WebExport.java:314 #, java-format msgid "Insert a caption for {0} here." msgstr "Inserta aquí una leyenda para {0}." -#: org/openscience/jmol/app/webexport/WebExport.java:317 +#: org/openscience/jmol/app/webexport/WebExport.java:315 #, java-format -msgid "" -"Insert additonal explanatory text here. Long text will wrap around Jmol " -"model {0}." -msgstr "" -"Inserta aquí cualquier texto adicional, por ejemplo la explicación del " -"modelo. Si el texto es largo, fluirá alrededor del modelo Jmol {0}." +msgid "Insert additonal explanatory text here. Long text will wrap around Jmol model {0}." +msgstr "Inserta aquí cualquier texto adicional, por ejemplo la explicación del modelo. Si el texto es largo, fluirá alrededor del modelo Jmol {0}." -#: org/openscience/jmol/app/webexport/WebExport.java:319 +#: org/openscience/jmol/app/webexport/WebExport.java:317 msgid "Insert your TITLE and INTRODUCTION here." msgstr "Inserta aquí el TÍTULO y la INTRODUCCIÓN." -#: org/openscience/jmol/app/webexport/WebExport.java:321 +#: org/openscience/jmol/app/webexport/WebExport.java:319 #, java-format -msgid "" -"The button {0} will appear in the box below. Insert information for {0} " -"here and below." -msgstr "" -"El botón {0} se mostrará en el recuadro de aquí abajo. Inserta la " -"información de {0} aquí y también más abajo." +msgid "The button {0} will appear in the box below. Insert information for {0} here and below." +msgstr "El botón {0} se mostrará en el recuadro de aquí abajo. Inserta la información de {0} aquí y también más abajo." -#: org/openscience/jmol/app/webexport/WebExport.java:322 +#: org/openscience/jmol/app/webexport/WebExport.java:320 #, java-format msgid "Insert more information for {0} here." msgstr "Más información para {0}" @@ -1466,7 +1440,7 @@ msgstr "añadiendo {0}.spt" #: org/openscience/jmol/app/webexport/WebPanel.java:498 -msgid "Based on template by A. Herráez as modified by J. Gutow" +msgid "Based on template by A. Herráez as modified by J. Gutow" msgstr "Basado en una plantilla de A. Herráez modificada por J. Gutow" #: org/openscience/jmol/app/webexport/WebPanel.java:501 @@ -1496,26 +1470,3 @@ msgid "compressing large data file to" msgstr "comprimiendo archivo de datos grande a" -#~ msgid "Render in pov-ray." -#~ msgstr "Preparar para POV-Ray" - -#~ msgid "&Measurements..." -#~ msgstr "&Mediciones" - -#~ msgid "Measurements..." -#~ msgstr "Mediciones..." - -#~ msgid "Jmol-to-POV-Ray Conversion" -#~ msgstr "Conversión de Jmol a POV-Ray" - -#~ msgid "Filename" -#~ msgstr "Nombre de archivo" - -#~ msgid "Height : " -#~ msgstr "Alto: " - -#~ msgid "POV-Ray Executable Location" -#~ msgstr "Ubicación del programa POV-Ray" - -#~ msgid "insert caption for {0} here" -#~ msgstr "inserta aquí la leyenda para {0}" Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-31 13:50:03 UTC (rev 9832) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-31 15:08:05 UTC (rev 9833) @@ -158,18 +158,16 @@ } - static String TimeStamp_WebLink() { - String out = " <small>" - + GT.escapeHTML(GT._("Page skeleton and JavaScript generated by export to web function of")); - Date now = new Date(); - String now_string = DateFormat.getDateInstance().format(now);//Specify medium verbosity on the date and time - out = out - + " <a href=\"http://jmol.sourceforge.net\">Jmol " + JmolViewer.getJmolVersion() + "</a> " - + GT.escapeHTML(GT._("on")) + " " + now_string - + ".</small><br />"; - return out; +\xA0 static String TimeStamp_WebLink() { +\xA0\xA0\xA0 return " <small>" +\xA0\xA0\xA0 \xA0\xA0+ GT.escapeHTML(GT._("Page skeleton and JavaScript generated by export to web function using {0} on {1}", +\xA0\xA0\xA0\xA0\xA0 new Object[] {"<a href=\"http://jmol.sourceforge.net\">Jmol " + jmolViewer.getJmolVersion() + "</a>", + DateFormat.getDateInstance().format(new Date()) } +\xA0 \xA0 )) +\xA0\xA0\xA0 + ".</small><br />"; + //Specify medium verbosity on the date and time } - + /* * Create the GUI and show it. For thread safety, * this method should be invoked from the Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-31 13:50:03 UTC (rev 9832) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-31 15:08:05 UTC (rev 9833) @@ -1,4 +1,4 @@ -/* $RCSfile$ +/* $RCSfile$ * $Author jonathan gutow$ * $Date Aug 5, 2007 9:19:06 AM $ * $Revision$ @@ -495,7 +495,7 @@ html = TextFormat.simpleReplace(html, "@CREATIONDATA@", WebExport .TimeStamp_WebLink()); html = TextFormat.simpleReplace(html, "@AUTHORDATA@", - GT.escapeHTML(GT._("Based on template by A. Herráez as modified by J. Gutow"))); + GT.escapeHTML(GT._("Based on template by A. Herráez as modified by J. Gutow"))); html = TextFormat.simpleReplace(html, "@LOGDATA@", "<pre>\n" + LogPanel.getText() + "\n</pre>\n"); LogPanel.log(" ..." + GT._("creating {0}", fileName)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-31 15:21:39
|
Revision: 9834 http://jmol.svn.sourceforge.net/jmol/?rev=9834&view=rev Author: hansonr Date: 2008-08-31 15:21:29 +0000 (Sun, 31 Aug 2008) Log Message: ----------- version=11.6.RC13_dev # bug fix: findbugs input stream closure Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/PreferencesDialog.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-31 15:08:05 UTC (rev 9833) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-31 15:21:29 UTC (rev 9834) @@ -3,6 +3,7 @@ version=11.6.RC13_dev +# bug fix: findbugs input stream closure # ----------------------------------------------------------------------------- #version=11.6.RC12 Modified: trunk/Jmol/src/org/openscience/jmol/app/PreferencesDialog.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/PreferencesDialog.java 2008-08-31 15:08:05 UTC (rev 9833) +++ trunk/Jmol/src/org/openscience/jmol/app/PreferencesDialog.java 2008-08-31 15:21:29 UTC (rev 9834) @@ -582,9 +582,9 @@ jmolDefaultProperties.put(jmolDefaults[i], jmolDefaults[i+1]); currentProperties = new Properties(jmolDefaultProperties); try { - FileInputStream fis2 = new FileInputStream(Jmol.UserPropsFile); - currentProperties.load(new BufferedInputStream(fis2, 1024)); - fis2.close(); + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(Jmol.UserPropsFile), 1024); + currentProperties.load(bis); + bis.close(); } catch (Exception e2) { } System.setProperties(currentProperties); Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-31 15:08:05 UTC (rev 9833) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-31 15:21:29 UTC (rev 9834) @@ -1,4 +1,4 @@ -/* $RCSfile$ +/* $RCSfile$ * $Author jonathan gutow$ * $Date Aug 5, 2007 9:19:06 AM $ * $Revision$ @@ -495,7 +495,7 @@ html = TextFormat.simpleReplace(html, "@CREATIONDATA@", WebExport .TimeStamp_WebLink()); html = TextFormat.simpleReplace(html, "@AUTHORDATA@", - GT.escapeHTML(GT._("Based on template by A. Herráez as modified by J. Gutow"))); + GT.escapeHTML(GT._("Based on template by A. Herr\xE1ez as modified by J. Gutow"))); html = TextFormat.simpleReplace(html, "@LOGDATA@", "<pre>\n" + LogPanel.getText() + "\n</pre>\n"); LogPanel.log(" ..." + GT._("creating {0}", fileName)); @@ -560,6 +560,7 @@ bytes = ArrayUtil.ensureLength(bytes, totalLen * 2); System.arraycopy(buf, 0, bytes, totalLen - len, len); } + bis.close(); buf = new byte[totalLen]; System.arraycopy(bytes, 0, buf, 0, totalLen); return buf; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gu...@us...> - 2008-09-01 01:12:46
|
Revision: 9844 http://jmol.svn.sourceforge.net/jmol/?rev=9844&view=rev Author: gutow Date: 2008-09-01 01:12:30 +0000 (Mon, 01 Sep 2008) Log Message: ----------- #Additions of GT.escapeHTML calls. #Stricter checking for special characters in file names used by the # javascript functions in pages created by webexport. #minor tweaks to the page templates. Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2.html Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-31 19:44:03 UTC (rev 9843) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-01 01:12:30 UTC (rev 9844) @@ -4,6 +4,8 @@ version=11.6.RC13_dev # bug fix: findbugs input stream closure +# translation: add GT.escapeHTML and stricter checking for special characters in file names +# used by web export. # ----------------------------------------------------------------------------- #version=11.6.RC12 Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java 2008-08-31 19:44:03 UTC (rev 9843) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java 2008-09-01 01:12:30 UTC (rev 9844) @@ -49,8 +49,7 @@ int width, int height) { this.viewer = viewer; this.name = name; - this.javaname = TextFormat.replaceAllCharacters(name, - "[]/\\#*&^%$?.,%<>' \"", '_'); //escape filename characters + this.javaname = name.replaceAll("[^a-zA-Z_0-9-]", "_"); //escape filename characters this.script = script; this.width = width; this.height = height; Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java 2008-08-31 19:44:03 UTC (rev 9843) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java 2008-09-01 01:12:30 UTC (rev 9844) @@ -90,7 +90,7 @@ s = TextFormat.simpleReplace(s, "@WIDTH@", "" + JmolSizeW); s = TextFormat.simpleReplace(s, "@HEIGHT@", "" + JmolSizeH); s = TextFormat.simpleReplace(s, "@NAME@", GT.escapeHTML(name)); - s = TextFormat.simpleReplace(s, "@APPLETNAME@", javaname); + s = TextFormat.simpleReplace(s, "@APPLETNAME@", GT.escapeHTML(javaname)); appletDefs.append(s); } return html; Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java 2008-08-31 19:44:03 UTC (rev 9843) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java 2008-09-01 01:12:30 UTC (rev 9844) @@ -67,14 +67,14 @@ String name = instance.name; String buttonname = instance.javaname; if (i == 0) - html = TextFormat.simpleReplace(html, "@APPLETNAME0@", buttonname); + html = TextFormat.simpleReplace(html, "@APPLETNAME0@", GT.escapeHTML(buttonname)); if (useAppletJS) { String info = "info for " + name; appletDefs.append("\naddAppletButton(" + i + ",'" + buttonname + "',\"" + name + "\",\"" + info + "\");"); } else { String s = htmlAppletTemplate; - s = TextFormat.simpleReplace(s, "@APPLETNAME0@", buttonname); + s = TextFormat.simpleReplace(s, "@APPLETNAME0@", GT.escapeHTML(buttonname)); s = TextFormat.simpleReplace(s, "@NAME@", GT.escapeHTML(name)); s = TextFormat.simpleReplace(s, "@LABEL@", GT.escapeHTML(name)); appletDefs.append(s); Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-31 19:44:03 UTC (rev 9843) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-09-01 01:12:30 UTC (rev 9844) @@ -258,7 +258,7 @@ static void setWebPageAuthor(String pageAuthor) { if (pageAuthor == null) - pageAuthor = GT.escapeHTML(GT._("Jmol Web Page Maker")); + pageAuthor = GT._("Jmol Web Page Maker"); pageAuthorName = pageAuthor; prop.setProperty("webMakerPageAuthorName", pageAuthorName); historyFile.addProperties(prop); Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-31 19:44:03 UTC (rev 9843) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-09-01 01:12:30 UTC (rev 9844) @@ -476,8 +476,8 @@ for (int i = 0; i < listModel.getSize(); i++) html = getAppletDefs(i, html, appletDefs, (JmolInstance) listModel .getElementAt(i)); - html = TextFormat.simpleReplace(html, "@AUTHOR@", pageAuthorName - .getText()); + html = TextFormat.simpleReplace(html, "@AUTHOR@", GT.escapeHTML(pageAuthorName + .getText())); html = TextFormat.simpleReplace(html, "@TITLE@", GT.escapeHTML(webPageTitle.getText())); html = TextFormat.simpleReplace(html, "@REMOTEAPPLETPATH@", remoteAppletPath.getText()); @@ -492,8 +492,8 @@ str = "<script type='text/javascript'>\n" + str + "\n</script>"; html = TextFormat.simpleReplace(html, "@APPLETINFO@", appletInfoDivs); html = TextFormat.simpleReplace(html, "@APPLETDEFS@", str); - html = TextFormat.simpleReplace(html, "@CREATIONDATA@", WebExport - .TimeStamp_WebLink()); + html = TextFormat.simpleReplace(html, "@CREATIONDATA@", GT.escapeHTML(WebExport + .TimeStamp_WebLink())); html = TextFormat.simpleReplace(html, "@AUTHORDATA@", GT.escapeHTML(GT._("Based on template by A. Herráez as modified by J. Gutow"))); html = TextFormat.simpleReplace(html, "@LOGDATA@", "<pre>\n" Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2.html =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2.html 2008-08-31 19:44:03 UTC (rev 9843) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/html/script_button_template2.html 2008-09-01 01:12:30 UTC (rev 9844) @@ -2,9 +2,8 @@ <table style="text-align: center; width: 100%" border="1" cellpadding="2" cellspacing="2"><tr><td> <script type="text/javascript"> - - document.write(jmolButton("script @APPLETNAME0@.spt", "@LABEL@")); - + var script = "script @APPLETNAME0@.spt"; + document.write(jmolButton(script, "@LABEL@")); </script> </td></tr></table> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-12 04:45:40
|
Revision: 9881 http://jmol.svn.sourceforge.net/jmol/?rev=9881&view=rev Author: hansonr Date: 2008-09-12 04:45:36 +0000 (Fri, 12 Sep 2008) Log Message: ----------- 11.6.RC14 VERSION signed applet write privileges # new feature: signed applet may write file, images, scripts, variables to disk. User dialog is required. # code: allows for getJpeg(quality,asString) option to return byte array instead of base64. # bug fix: xxx.split()[3].replace does not do selection first # bug fix: ramachandran and quaternion derivative not indicating structure due to dropping last atom Modified Paths: -------------- trunk/Jmol/src/org/jmol/api/JmolImageTyperInterface.java trunk/Jmol/src/org/jmol/applet/Jvm12.java trunk/Jmol/src/org/jmol/export/image/ImageTyper.java trunk/Jmol/src/org/jmol/viewer/StateManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java trunk/Jmol/src/org/openscience/jmol/app/Jmol.java Modified: trunk/Jmol/src/org/jmol/api/JmolImageTyperInterface.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolImageTyperInterface.java 2008-09-11 20:27:03 UTC (rev 9880) +++ trunk/Jmol/src/org/jmol/api/JmolImageTyperInterface.java 2008-09-12 04:45:36 UTC (rev 9881) @@ -1,11 +1,14 @@ package org.jmol.api; +import java.awt.Component; +import java.io.File; + import javax.swing.JFileChooser; public interface JmolImageTyperInterface { public abstract void createPanel(JFileChooser fc, String[] choices, - String[] extensions, int defaultChoice); + String[] extensions, String defaultExt); /** * Memorize the default type for the next time. @@ -29,4 +32,6 @@ */ public abstract int getQuality(String sType); + public abstract File setSelectedFile(Component awtComponent, File file); + } Modified: trunk/Jmol/src/org/jmol/applet/Jvm12.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-11 20:27:03 UTC (rev 9880) +++ trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-12 04:45:36 UTC (rev 9881) @@ -96,8 +96,8 @@ } private JFileChooser exportChooser; - final private static String[] imageChoices = { "JPEG", "PNG", "GIF" }; - final private static String[] imageExtensions = { "jpg", "png", "gif" }; + final private static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM", "SPT" }; + final private static String[] imageExtensions = { "jpg", "png", "gif", "PPM", "spt" }; String createImage(String fileName, String type, Object text_or_bytes, int quality) { File file = null; @@ -109,7 +109,7 @@ if (fileName == null) { fileName = viewer.getModelSetFileName(); pathName = viewer.getModelSetPathName(); - it.createPanel(exportChooser, imageChoices, imageExtensions, 0); + it.createPanel(exportChooser, imageChoices, imageExtensions, type); if ((fileName != null) && (pathName != null)) { int extensionStart = fileName.lastIndexOf('.'); if (extensionStart != -1) { @@ -119,22 +119,18 @@ file = new File(pathName, fileName); } } else { - int n; - for (n = 0; n < imageExtensions.length; n++) - if (fileName.indexOf(imageExtensions[n]) >= 0) + String sType = 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]; break; - it.createPanel(exportChooser, imageChoices, imageExtensions, n - % imageExtensions.length); + } + it.createPanel(exportChooser, imageChoices, imageExtensions, sType); file = new File(fileName); } - exportChooser.setSelectedFile(file); - if (exportChooser.showSaveDialog(awtComponent) != 0) + if ((file = it.setSelectedFile(awtComponent, file)) == null) return null; - it.memorizeDefaultType(); - file = exportChooser.getSelectedFile(); - if (file == null) - return null; JmolImageCreatorInterface c = (JmolImageCreatorInterface) Interface .getOptionInterface("export.image.ImageCreator"); c.setViewer(viewer); Modified: trunk/Jmol/src/org/jmol/export/image/ImageTyper.java =================================================================== --- trunk/Jmol/src/org/jmol/export/image/ImageTyper.java 2008-09-11 20:27:03 UTC (rev 9880) +++ trunk/Jmol/src/org/jmol/export/image/ImageTyper.java 2008-09-12 04:45:36 UTC (rev 9881) @@ -26,6 +26,7 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JFileChooser; +import javax.swing.JOptionPane; import javax.swing.JSlider; import javax.swing.JPanel; import javax.swing.JComboBox; @@ -35,6 +36,7 @@ import javax.swing.event.ChangeListener; import java.awt.BorderLayout; +import java.awt.Component; import java.awt.FlowLayout; import java.io.File; @@ -55,30 +57,19 @@ public ImageTyper() { } - /** - * A simple panel with a combo box for allowing the user to choose - * the input file type. - * - * @param fc the file chooser - * @param defaultChoice - * @param extensions - * @param choices - */ - public ImageTyper(JFileChooser fc, String[] choices, String[] extensions, int defaultChoice) { - createPanel(fc, choices, extensions, defaultChoice); - } - /* (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, int defaultChoice) { + public void createPanel(JFileChooser fc, String[] choices, String[] extensions, String type) { fileChooser = fc; fc.setAccessory(this); setLayout(new BorderLayout()); choice = null; + for (defaultChoice = choices.length; --defaultChoice >= 1; ) + if (choices[defaultChoice].equals(type)) + break; extension = extensions[defaultChoice]; this.extensions = extensions; - this.defaultChoice = defaultChoice; JPanel cbPanel = new JPanel(); cbPanel.setLayout(new FlowLayout()); cbPanel.setBorder(new TitledBorder(GT._("Image Type"))); @@ -197,4 +188,25 @@ public int getQuality(String sType) { return (sType.equals("JPEG") ? qSliderJPEG.getValue() : sType.equals("PNG") ? qSliderPNG.getValue() : -1); } + + private boolean doOverWrite(File file) { + Object[] options = { GT._("YES"), GT._("NO") }; + int opt = JOptionPane.showOptionDialog(fileChooser, GT._("Do you want to overwrite file {0}?", file + .getAbsolutePath()), GT._("Warning"), JOptionPane.DEFAULT_OPTION, + JOptionPane.WARNING_MESSAGE, null, options, options[1]); + return (opt == 0); + } + + public File setSelectedFile(Component c, File file) { + while (true) { + if (fileChooser.showSaveDialog(c) != JFileChooser.APPROVE_OPTION) + return null; + memorizeDefaultType(); + file = fileChooser.getSelectedFile(); + if (file == null) + return null; + if (!file.exists() || doOverWrite(file)) + return file; + } + } } Modified: trunk/Jmol/src/org/jmol/viewer/StateManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StateManager.java 2008-09-11 20:27:03 UTC (rev 9880) +++ trunk/Jmol/src/org/jmol/viewer/StateManager.java 2008-09-12 04:45:36 UTC (rev 9881) @@ -761,7 +761,7 @@ + ";unitcellcolor;windowcentered;zerobasedxyzrasmol;zoomenabled;" + // saved in the hash table but not considered part of the state: - ";scriptqueue;scriptreportinglevel;syncscript;syncmouse" + ";scriptqueue;scriptreportinglevel;syncscript;syncmouse;currentlocalpath" + // more settable Jmol variables ";ambient;bonds;colorrasmol;diffuse;frank;hetero;hidenotselected" @@ -1119,6 +1119,7 @@ setParameterValue("cartoonRockets", cartoonRockets); setParameterValue("chainCaseSensitive", chainCaseSensitive); setParameterValue("colorRasmol", false); + setParameterValue("currentLocalPath", ""); setParameterValue("dataSeparator", dataSeparator); setParameterValue("debugScript", debugScript); setParameterValue("defaultLattice", "{0 0 0}"); Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-11 20:27:03 UTC (rev 9880) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-12 04:45:36 UTC (rev 9881) @@ -4089,6 +4089,9 @@ boolean notFound = false; while (true) { + ///11.6.RC15 + if (key.equalsIgnoreCase("currentLocalPath")) + break; ///11.5.42 // pickLabel if (key.equalsIgnoreCase("pickLabel")) { Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-09-11 20:27:03 UTC (rev 9880) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-09-12 04:45:36 UTC (rev 9881) @@ -1512,8 +1512,8 @@ } } - final static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM", "PDF" }; - final static String[] imageExtensions = { "jpg", "png", "gif", "ppm", "pdf" }; + final static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM", "PDF", "SPT" }; + final static String[] imageExtensions = { "jpg", "png", "gif", "ppm", "pdf", "SPT" }; class ExportAction extends AbstractAction { @@ -1524,7 +1524,7 @@ public void actionPerformed(ActionEvent e) { ImageTyper it = new ImageTyper(); - it.createPanel(exportChooser, imageChoices, imageExtensions, 0); + it.createPanel(exportChooser, imageChoices, imageExtensions, "JPEG"); String fileName = viewer.getModelSetFileName(); String pathName = viewer.getModelSetPathName(); File file = null; @@ -1535,59 +1535,54 @@ + it.getExtension(); } file = new File(pathName, fileName); - exportChooser.setSelectedFile(file); } - - int retval = exportChooser.showSaveDialog(Jmol.this); - if (retval == 0) { - it.memorizeDefaultType(); - file = exportChooser.getSelectedFile(); - if (file != null) { - String sType = it.getType(); - if (sType == null) { - sType = file.getName().toUpperCase(); - int i = sType.lastIndexOf("."); - if (i < 0) - sType = "JPG"; - else - sType = sType.substring(i + 1); - } - int iQuality = it.getQuality(sType); - // PDF is application-only - if (sType.equals("PDF")) { - Document document = new Document(); - try { - PdfWriter writer = PdfWriter.getInstance(document, - new FileOutputStream(file)); - - document.open(); - - int w = display.getWidth(); - int h = display.getHeight(); - PdfContentByte cb = writer.getDirectContent(); - PdfTemplate tp = cb.createTemplate(w, h); - Graphics2D g2 = tp.createGraphics(w, h); - g2.setStroke(new BasicStroke(0.1f)); - tp.setWidth(w); - tp.setHeight(h); - - display.print(g2); - g2.dispose(); - cb.addTemplate(tp, 72, 720 - h); - } catch (DocumentException de) { - System.err.println(de.getMessage()); - } catch (IOException ioe) { - System.err.println(ioe.getMessage()); - } - document.close(); - return; - } - createImageStatus(file.getAbsolutePath(), sType, null, iQuality); - } + if ((file = it.setSelectedFile(Jmol.this, file)) == null) + return; + file = exportChooser.getSelectedFile(); + String sType = it.getType(); + if (sType == null) { + // file type changer was not touched + sType = file.getName(); + int i = sType.lastIndexOf("."); + if (i < 0) + return; // make no assumptions - require a type by extension + sType = sType.substring(i + 1).toUpperCase(); } + int iQuality = it.getQuality(sType); + if (sType.equals("PDF")) + createPdfDocument(file); + else + createImageStatus(file.getAbsolutePath(), sType, null, iQuality); } + + private void createPdfDocument(File file) { + // PDF is application-only + Document document = new Document(); + try { + PdfWriter writer = PdfWriter.getInstance(document, + new FileOutputStream(file)); + document.open(); + int w = display.getWidth(); + int h = display.getHeight(); + PdfContentByte cb = writer.getDirectContent(); + PdfTemplate tp = cb.createTemplate(w, h); + Graphics2D g2 = tp.createGraphics(w, h); + g2.setStroke(new BasicStroke(0.1f)); + tp.setWidth(w); + tp.setHeight(h); + display.print(g2); + g2.dispose(); + cb.addTemplate(tp, 72, 720 - h); + } catch (DocumentException de) { + System.err.println(de.getMessage()); + } catch (IOException ioe) { + System.err.println(ioe.getMessage()); + } + document.close(); + } + } - + class RecentFilesAction extends AbstractAction { public RecentFilesAction() { @@ -1714,10 +1709,8 @@ * @return a File to the user directory */ public static File getUserDirectory() { - if (System.getProperty("user.dir") == null) { - return null; - } - return new File(System.getProperty("user.dir")); + String dir = System.getProperty("user.dir"); + return dir == null ? null : new File(System.getProperty("user.dir")); } public static final String chemFileProperty = "chemFile"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-12 13:05:19
|
Revision: 9886 http://jmol.svn.sourceforge.net/jmol/?rev=9886&view=rev Author: hansonr Date: 2008-09-12 13:05:13 +0000 (Fri, 12 Sep 2008) Log Message: ----------- version=11.6.RC15_dev # new feature: signed applet/application load ?xxx uses load dialog Modified Paths: -------------- trunk/Jmol/src/org/jmol/api/JmolImageTyperInterface.java trunk/Jmol/src/org/jmol/applet/Jmol.java trunk/Jmol/src/org/jmol/applet/Jvm12.java trunk/Jmol/src/org/jmol/export/image/ImageTyper.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/FileManager.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/StatusManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java trunk/Jmol/src/org/openscience/jmol/app/Jmol.java Modified: trunk/Jmol/src/org/jmol/api/JmolImageTyperInterface.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolImageTyperInterface.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/api/JmolImageTyperInterface.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -32,6 +32,6 @@ */ public abstract int getQuality(String sType); - public abstract File setSelectedFile(Component awtComponent, File file); + public abstract File showDialog(Component awtComponent, File file); } Modified: trunk/Jmol/src/org/jmol/applet/Jmol.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/applet/Jmol.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -870,6 +870,13 @@ case JmolConstants.CALLBACK_LOADSTRUCT: String errorMsg = (String) data[4]; //data[5] = (String) null; // don't pass reference to clientFile reference + if (strInfo != null && strInfo.startsWith("\t")) { + if (jvm12 != null && isSigned) + jvm12.openFileWithDialog(strInfo.substring(1)); + else + showStatusAndConsole(GT._("This applet cannot open file dialogs."), true); + return; + } if (errorMsg != null) { showStatusAndConsole((errorMsg.indexOf("NOTE:") >= 0 ? "" : GT ._("File Error:")) @@ -1060,8 +1067,7 @@ return GT._("File creation failed."); } } else if (quality != Integer.MAX_VALUE) { - return GT - ._( + return GT._( "File creation by this applet is not allowed. For Base64 JPEG format, use {0}.", "jmolGetPropertyAsString('image')"); } Modified: trunk/Jmol/src/org/jmol/applet/Jvm12.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/applet/Jvm12.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -31,6 +31,7 @@ import javax.swing.JFileChooser; import org.jmol.util.Logger; +import org.jmol.viewer.FileManager; class Jvm12 { @@ -95,22 +96,40 @@ return console.getText(); } - private JFileChooser exportChooser; - final private static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM", "SPT" }; - final private static String[] imageExtensions = { "jpg", "png", "gif", "PPM", "spt" }; + private JFileChooser exportChooser, openChooser; + final private static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM" }; + final private static String[] imageExtensions = { "jpg", "png", "gif", "PPM" }; + void openFileWithDialog(String fileName) { + if (openChooser == null) { + openChooser = new JFileChooser(); + } + if (fileName != null && fileName.length() > 0) + openChooser.setSelectedFile(new File(fileName)); + if (fileName != null && fileName.indexOf(":") < 0) + openChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); + if (openChooser.showOpenDialog(awtComponent) != JFileChooser.APPROVE_OPTION) + return; + File file = openChooser.getSelectedFile(); + if (file == null) + return; + viewer.setStringProperty("currentLocalPath", file.getParent()); + viewer.openFile("file:///" + file.getAbsolutePath().replace('\\','/')); + } + + String createImage(String fileName, String type, Object text_or_bytes, int quality) { File file = null; - String pathName; if (exportChooser == null) exportChooser = new JFileChooser(); + exportChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); JmolImageTyperInterface it = (JmolImageTyperInterface) Interface .getOptionInterface("export.image.ImageTyper"); if (fileName == null) { fileName = viewer.getModelSetFileName(); - pathName = viewer.getModelSetPathName(); + String pathName = exportChooser.getCurrentDirectory().getPath(); it.createPanel(exportChooser, imageChoices, imageExtensions, type); - if ((fileName != null) && (pathName != null)) { + if (fileName != null && pathName != null) { int extensionStart = fileName.lastIndexOf('.'); if (extensionStart != -1) { fileName = fileName.substring(0, extensionStart) + "." @@ -129,8 +148,9 @@ file = new File(fileName); } - if ((file = it.setSelectedFile(awtComponent, file)) == null) + if ((file = it.showDialog(awtComponent, file)) == null) return null; + viewer.setStringProperty("currentLocalPath",file.getParent()); JmolImageCreatorInterface c = (JmolImageCreatorInterface) Interface .getOptionInterface("export.image.ImageCreator"); c.setViewer(viewer); Modified: trunk/Jmol/src/org/jmol/export/image/ImageTyper.java =================================================================== --- trunk/Jmol/src/org/jmol/export/image/ImageTyper.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/export/image/ImageTyper.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -197,7 +197,7 @@ return (opt == 0); } - public File setSelectedFile(Component c, File file) { + public File showDialog(Component c, File file) { while (true) { if (fileChooser.showSaveDialog(c) != JFileChooser.APPROVE_OPTION) return null; Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -4254,14 +4254,18 @@ int i = 1; // ignore optional file format // String filename = ""; - String modelName = "fileset"; + String modelName = null; if (statementLength == 1) { i = 0; } else { - if (tokAt(1) == Token.identifier - || parameterAsString(1).equals("fileset")) { + modelName = parameterAsString(1); + if (modelName.startsWith("?")) { + if (!isSyntaxCheck) + viewer.openFileWithDialog(modelName.substring(1)); + return; + } + if (tokAt(1) == Token.identifier || modelName.equals("fileset")) { // - modelName = parameterAsString(1); if (modelName.equals("menu")) { checkLength(3); if (!isSyntaxCheck) @@ -4273,6 +4277,8 @@ isAppend = (modelName.equalsIgnoreCase("append")); if (modelName.equalsIgnoreCase("trajectory")) params[0] = Integer.MIN_VALUE; + } else { + modelName = "fileset"; } if (getToken(i).tok != Token.string) error(ERROR_filenameExpected); @@ -4293,8 +4299,8 @@ loadScript.append(" "); if (!filename.equals("string") && !filename.equals("string[]")) loadScript.append("/*file*/"); - loadScript.append( - Escape.escape(modelName = (String) htParams.get("fullPathName"))); + loadScript.append(Escape.escape(modelName = (String) htParams + .get("fullPathName"))); } } else if (getToken(i + 1).tok == Token.leftbrace || theTok == Token.point3f || theTok == Token.integer @@ -4399,16 +4405,14 @@ htParams.put("filter", filter); sOptions += " FILTER " + Escape.escape(filter); } - - - + if (!isSyntaxCheck || isScriptCheck && fileOpenCheck) { viewer.openFile(filename, htParams, null, isAppend); loadScript.append(" "); if (!filename.equals("string") && !filename.equals("string[]")) loadScript.append("/*file*/"); - loadScript.append( - Escape.escape(modelName = (String) htParams.get("fullPathName"))); + loadScript.append(Escape.escape(modelName = (String) htParams + .get("fullPathName"))); loadScript.append(sOptions); } } else { @@ -4442,7 +4446,7 @@ script(Token.script); return; } - evalError(errMsg); + evalError(errMsg); } if (isAppend && (appendNew || nFiles > 1)) { Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/viewer/FileManager.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -31,6 +31,7 @@ import org.jmol.api.JmolAdapter; import org.jmol.api.JmolFileReaderInterface; +import org.jmol.api.JmolViewer; import java.net.URL; import java.net.URLConnection; @@ -497,8 +498,17 @@ this.appletProxy = (appletProxy == null || appletProxy.length() == 0 ? null : appletProxy); } + private final static int URL_LOCAL = 3; private final static String[] urlPrefixes = {"http:", "https:", "ftp:", "file:"}; - + private static int urlTypeIndex(String name) { + for (int i = 0; i < urlPrefixes.length; ++i) { + if (name.startsWith(urlPrefixes[i])) { + return i; + } + } + return -1; + } + private void setNames(String[] names) { fullPathName = names[0]; fileName = names[1]; @@ -507,9 +517,12 @@ private String[] classifyName(String name) { if (name == null) return null; - String[] names = new String[2]; + File file = null; + URL url = null; + String[] names = null; if (name.indexOf("=") == 0) - name = TextFormat.formatString(viewer.getLoadFormat(), "FILE", name.substring(1)); + name = TextFormat.formatString(viewer.getLoadFormat(), "FILE", name + .substring(1)); String defaultDirectory = viewer.getDefaultDirectory(); if (name.indexOf(":") < 0) name = addDirectory(defaultDirectory, name); @@ -518,46 +531,44 @@ try { if (name.indexOf(":\\") == 1 || name.indexOf(":/") == 1) name = "file:///" + name; - //System.out.println("filemanager name " + name); - //System.out.println("filemanager adb " + appletDocumentBase); - URL url = new URL(appletDocumentBase, name); - names[0] = url.toString(); - // we add one to lastIndexOf(), so don't worry about -1 return value - names[1] = names[0].substring(names[0].lastIndexOf('/') + 1, - names[0].length()); - //System.out.println("filemanager 0 " + names[0]); - //System.out.println("filemanager 1 " + names[1]); + url = new URL(appletDocumentBase, name); } catch (MalformedURLException e) { openErrorMessage = e.getMessage(); + return null; } - return names; - } - // This code is for the app - int i = urlTypeIndex(name); - if (i >= 0) { - try { - URL url = new URL(name); - names[0] = url.toString(); - names[1] = names[0].substring(names[0].lastIndexOf('/') + 1, - names[0].length()); - } catch (MalformedURLException e) { - openErrorMessage = e.getMessage(); + } else { + // This code is for the app + if (urlTypeIndex(name) >= 0) { + try { + url = new URL(name); + } catch (MalformedURLException e) { + openErrorMessage = e.getMessage(); + return null; + } + } else { + file = new File(name); + names = new String[]{file.getAbsolutePath(), file.getName()}; } - return names; } - File file = new File(name); - names[0] = file.getAbsolutePath(); - names[1] = file.getName(); + if (url != null) { + names = new String[2]; + names[0] = url.toString(); + names[1] = names[0].substring(names[0].lastIndexOf('/') + 1); + } + if (file != null || urlTypeIndex(names[0]) == URL_LOCAL) { + String path = (file == null ? TextFormat.trim(names[0].substring(5), "/") : names[0]); + path = path.substring(0, path.length() - names[1].length() - 1); + viewer.setStringProperty("currentLocalPath", path); + } return names; } - private static int urlTypeIndex(String name) { - for (int i = 0; i < urlPrefixes.length; ++i) { - if (name.startsWith(urlPrefixes[i])) { - return i; - } - } - return -1; + public static File getLocalDirectory(JmolViewer viewer) { + String localDir = (String) viewer.getParameter("currentLocalPath"); + if (localDir.length() == 0) + return null; + File f = new File(localDir); + return f.isDirectory() ? f : f.getParentFile(); } private String addDirectory(String defaultDirectory, String name) { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-09-12 13:05:13 UTC (rev 9886) @@ -3,6 +3,7 @@ version=11.6.RC15_dev +# new feature: signed applet/application load ?xxx uses load dialog # ----------------------------------------------------------------------------- #version=11.6.RC14 Modified: trunk/Jmol/src/org/jmol/viewer/StatusManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StatusManager.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/viewer/StatusManager.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -169,13 +169,16 @@ } synchronized void setStatusFileLoaded(String fullPathName, String fileName, - String modelName, String errorMsg, int ptLoad) { - setStatusChanged("fileLoaded", ptLoad, fullPathName, false); - if (errorMsg != null) - setStatusChanged("fileLoadError", ptLoad, errorMsg, false); - if (jmolStatusListener != null && (ptLoad <=0 || ptLoad == 3)) - jmolStatusListener.notifyCallback(JmolConstants.CALLBACK_LOADSTRUCT, - new Object[] {"", fullPathName, fileName, modelName, errorMsg} ); + String modelName, String errorMsg, + int ptLoad) { + if (fullPathName == null || !fullPathName.startsWith("\t")) { + setStatusChanged("fileLoaded", ptLoad, fullPathName, false); + if (errorMsg != null) + setStatusChanged("fileLoadError", ptLoad, errorMsg, false); + } + if (jmolStatusListener != null && (ptLoad <= 0 || ptLoad == 3)) + jmolStatusListener.notifyCallback(JmolConstants.CALLBACK_LOADSTRUCT, + new Object[] { "", fullPathName, fileName, modelName, errorMsg }); } synchronized void setStatusFrameChanged(int frameNo, int fileNo, int modelNo, int firstNo, int lastNo) { Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -3975,6 +3975,10 @@ strError, ptLoad); } + void openFileWithDialog(String fileName) { + statusManager.setStatusFileLoaded("\t" + fileName, null, null, null, 0); + } + private void setStatusFileNotLoaded(String fullPathName, String errorMsg) { setStatusFileLoaded(-1, fullPathName, null, null, errorMsg); } Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-09-12 12:10:12 UTC (rev 9885) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-09-12 13:05:13 UTC (rev 9886) @@ -30,6 +30,7 @@ import org.jmol.popup.JmolPopup; import org.jmol.i18n.GT; import org.jmol.util.*; +import org.jmol.viewer.FileManager; import org.jmol.viewer.JmolConstants; import org.jmol.viewer.Viewer; import org.openscience.jmol.app.webexport.WebExport; @@ -77,11 +78,8 @@ public AtomSetChooser atomSetChooser; private ExecuteScriptAction executeScriptAction; protected JFrame frame; - protected static File currentDir; FileChooser openChooser; FilePreview openPreview; - private JFileChooser saveChooser; - private FileTyper fileTyper; JFileChooser exportChooser, writeChooser; JmolPopup jmolpopup; @@ -110,11 +108,6 @@ static Boolean haveBorder = Boolean.FALSE; /** - * The current file. - */ - File currentFile; - - /** * Button group for toggle buttons in the toolbar. */ static AbstractButton buttonRotate = null; @@ -153,6 +146,7 @@ static Boolean isSilent = Boolean.FALSE; static Boolean haveConsole = Boolean.TRUE; static Boolean haveDisplay = Boolean.TRUE; + JmolAdapter modelAdapter; Jmol(Splash splash, JFrame frame, Jmol parent, int startupWidth, int startupHeight, String commandOptions) { @@ -188,7 +182,6 @@ // display = new DisplayPanel(status, guimap, haveDisplay.booleanValue(), startupWidth, startupHeight); - JmolAdapter modelAdapter; String adapter = System.getProperty("model"); if (adapter == null || adapter.length() == 0) adapter = "smarter"; @@ -216,8 +209,6 @@ if (haveDisplay.booleanValue()) { say(GT._("Initializing Script Window...")); scriptWindow = new ScriptWindow(viewer, frame); - say(GT._("Initializing AtomSetChooser Window...")); - atomSetChooser = new AtomSetChooser(viewer, frame); } MyStatusListener myStatusListener; @@ -277,22 +268,7 @@ say(GT._("Starting display...")); display.start(); - say(GT._("Setting up File Choosers...")); - openChooser = new FileChooser(); - openChooser.setCurrentDirectory(currentDir); - String previewProperty = System.getProperty("openFilePreview", "true"); - if (Boolean.valueOf(previewProperty).booleanValue()) { - openPreview = new FilePreview(openChooser, modelAdapter); - } - saveChooser = new JFileChooser(); - fileTyper = new FileTyper(); - saveChooser.addPropertyChangeListener(fileTyper); - saveChooser.setAccessory(fileTyper); - saveChooser.setCurrentDirectory(currentDir); - exportChooser = new JFileChooser(); - exportChooser.setCurrentDirectory(currentDir); - writeChooser = new JFileChooser(); - writeChooser.setCurrentDirectory(currentDir); + //say(GT._("Setting up File Choosers...")); /* pcs.addPropertyChangeListener(chemFileProperty, exportAction); pcs.addPropertyChangeListener(chemFileProperty, povrayAction); @@ -302,7 +278,6 @@ pcs.addPropertyChangeListener(chemFileProperty, viewMeasurementTableAction); */ - pcs.addPropertyChangeListener(chemFileProperty, atomSetChooser); if (menuFile != null) { menuStructure = viewer.getFileAsString(menuFile); @@ -393,9 +368,6 @@ if (splash != null) splash.showStatus(GT._("Initializing Jmol...")); - // cache the current directory to speed up Jmol window creation - currentDir = getUserDirectory(); - Jmol window = new Jmol(splash, frame, null, startupWidth, startupHeight, commandOptions); if (haveDisplay.booleanValue()) @@ -792,6 +764,10 @@ } } + void setLocalDirectory(File f) { + viewer.setStringProperty("currentLocalPath",f.getParent()); + } + private void say(String message) { if (haveDisplay.booleanValue()) if (splash == null) { @@ -1438,24 +1414,7 @@ } public void actionPerformed(ActionEvent e) { - - openChooser.setDialogSize(historyFile - .getWindowSize(FILE_OPEN_WINDOW_NAME)); - openChooser.setDialogLocation(historyFile - .getWindowPosition(FILE_OPEN_WINDOW_NAME)); - int retval = openChooser.showOpenDialog(Jmol.this); - if (retval == 0) { - File file = openChooser.getSelectedFile(); - if ((openPreview != null) && (openPreview.isAppendSelected())) { - viewer.scriptWait("load append " - + Escape.escape(file.getAbsolutePath())); - } else { - viewer.openFile(file.getAbsolutePath()); - } - return; - } - historyFile.addWindowInfo(FILE_OPEN_WINDOW_NAME, openChooser.getDialog(), - null); + openFileWithDialog(null); } } @@ -1512,8 +1471,8 @@ } } - final static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM", "PDF", "SPT" }; - final static String[] imageExtensions = { "jpg", "png", "gif", "ppm", "pdf", "SPT" }; + final static String[] imageChoices = { "JPEG", "PNG", "GIF", "PPM", "PDF" }; + final static String[] imageExtensions = { "jpg", "png", "gif", "ppm", "pdf" }; class ExportAction extends AbstractAction { @@ -1523,12 +1482,16 @@ public void actionPerformed(ActionEvent e) { + if (exportChooser == null) + exportChooser = new JFileChooser(); + exportChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); ImageTyper it = new ImageTyper(); it.createPanel(exportChooser, imageChoices, imageExtensions, "JPEG"); + String fileName = viewer.getModelSetFileName(); - String pathName = viewer.getModelSetPathName(); + String pathName = exportChooser.getCurrentDirectory().getPath(); File file = null; - if ((fileName != null) && (pathName != null)) { + if (fileName != null && pathName != null) { int extensionStart = fileName.lastIndexOf('.'); if (extensionStart != -1) { fileName = fileName.substring(0, extensionStart) + "." @@ -1536,9 +1499,10 @@ } file = new File(pathName, fileName); } - if ((file = it.setSelectedFile(Jmol.this, file)) == null) + if ((file = it.showDialog(Jmol.this, file)) == null) return; file = exportChooser.getSelectedFile(); + setLocalDirectory(file); String sType = it.getType(); if (sType == null) { // file type changer was not touched @@ -1629,11 +1593,6 @@ } public void actionPerformed(ActionEvent e) { - - if (currentFile != null) { - currentFile.getName().substring(0, - currentFile.getName().lastIndexOf(".")); - } new PovrayDialog(frame, viewer); } @@ -1646,13 +1605,17 @@ } public void actionPerformed(ActionEvent e) { + if (writeChooser == null) + writeChooser = new JFileChooser(); + writeChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); int retval = writeChooser.showSaveDialog(Jmol.this); if (retval == JFileChooser.APPROVE_OPTION) { File file = writeChooser.getSelectedFile(); - if (file != null) { - createImageStatus(file.getAbsolutePath(), "SPT", viewer - .getStateInfo(), Integer.MIN_VALUE); - } + if (file == null) + return; + setLocalDirectory(file); + createImageStatus(file.getAbsolutePath(), "SPT", viewer + .getStateInfo(), Integer.MIN_VALUE); } } } @@ -1713,6 +1676,38 @@ return dir == null ? null : new File(System.getProperty("user.dir")); } + void openFileWithDialog(String fileName) { + if (openChooser == null) { + openChooser = new FileChooser(); + String previewProperty = System.getProperty("openFilePreview", "true"); + if (Boolean.valueOf(previewProperty).booleanValue()) { + openPreview = new FilePreview(openChooser, modelAdapter); + } + } + if (fileName != null && fileName.length() > 0) + openChooser.setSelectedFile(new File(fileName)); + if (fileName != null && fileName.indexOf(":") < 0) + openChooser.setCurrentDirectory(FileManager.getLocalDirectory(viewer)); + openChooser.setDialogSize(historyFile + .getWindowSize(FILE_OPEN_WINDOW_NAME)); + openChooser.setDialogLocation(historyFile + .getWindowPosition(FILE_OPEN_WINDOW_NAME)); + if (openChooser.showOpenDialog(Jmol.this) == JFileChooser.APPROVE_OPTION) { + File file = openChooser.getSelectedFile(); + if (file == null) + return; + setLocalDirectory(file); + if (openPreview != null && openPreview.isAppendSelected()) { + viewer.scriptWait("load append " + + Escape.escape(file.getAbsolutePath())); + } else { + viewer.openFile(file.getAbsolutePath()); + } + } + historyFile.addWindowInfo(FILE_OPEN_WINDOW_NAME, openChooser.getDialog(), + null); + } + public static final String chemFileProperty = "chemFile"; class MyStatusListener implements JmolStatusListener { @@ -1837,10 +1832,6 @@ private void notifyFileLoaded(String fullPathName, String fileName, String modelName, String errorMsg) { if (errorMsg != null) { - // JOptionPane.showMessageDialog(null, - // fullPathName + "\n\n" + errorMsg + "\n\n" , - // GT._("File not loaded"), - // JOptionPane.ERROR_MESSAGE); return; } if (display == null) @@ -1852,6 +1843,10 @@ scriptWindow.undoClear(); // a 'clear/zap' operation } else { + if (fullPathName.startsWith("\t")) { + openFileWithDialog(fullPathName.substring(1)); + return; + } if (modelName != null && fileName != null) title = fileName + " - " + modelName; else if (fileName != null) @@ -1861,6 +1856,10 @@ recentFiles.notifyFileOpen(fullPathName); } frame.setTitle(title); + if (atomSetChooser == null) { + atomSetChooser = new AtomSetChooser(viewer, frame); + pcs.addPropertyChangeListener(chemFileProperty, atomSetChooser); + } pcs.firePropertyChange(chemFileProperty, null, null); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2009-02-13 00:04:48
|
Revision: 10641 http://jmol.svn.sourceforge.net/jmol/?rev=10641&view=rev Author: hansonr Date: 2009-02-13 00:04:43 +0000 (Fri, 13 Feb 2009) Log Message: ----------- version=11.7.26_dev isosurface AREA # new feature: isosurface AREA reports the area of an isosurface and stores the number in variable isosurfaceArea # new feature: ASimpleJvxlWriter can calculate the area of the surface Modified Paths: -------------- trunk/Jmol/src/org/jmol/jvxl/api/VertexDataServer.java trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/Jmol.java trunk/Jmol/src/org/openscience/jvxl/simplewriter/ASimpleJvxlWriter.java trunk/Jmol/src/org/openscience/jvxl/simplewriter/JvxlWrite.java trunk/Jmol/src/org/openscience/jvxl/simplewriter/SimpleMarchingCubes.java Modified: trunk/Jmol/src/org/jmol/jvxl/api/VertexDataServer.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/api/VertexDataServer.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/jmol/jvxl/api/VertexDataServer.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -108,5 +108,6 @@ * @param z * @return value[x][y][z] */ - public float getValue(int x, int y, int z); + public abstract float getValue(int x, int y, int z); + } Modified: trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -123,7 +123,6 @@ isoPointIndexPlanes = new int[2][yzCount][3]; xyPlanes = (mode == MODE_GETXYZ ? new float[2][yzCount] : null); setLinearOffsets(); - // calcVoxelVertexVectors is unnecessary if just creating a JVXL file: calcVoxelVertexVectors(); } @@ -132,19 +131,17 @@ private final static int MODE_BITSET = 2; private final static int MODE_GETXYZ = 3; + private final float[] vertexValues = new float[8]; + + int edgeCount; + private final Vector3f[] voxelVertexVectors = new Vector3f[8]; - private final float[] vertexValues = new float[8]; - private final Point3i[] vertexPoints = new Point3i[8]; private final Vector3f[] edgeVectors = new Vector3f[12]; { for (int i = 12; --i >= 0;) edgeVectors[i] = new Vector3f(); - for (int i = 8; --i >= 0;) - vertexPoints[i] = new Point3i(); } - int edgeCount; - private void calcVoxelVertexVectors() { volumeData.setMatrix(); for (int i = 8; --i >= 0;) @@ -291,10 +288,8 @@ byte[] triangles = triangleTable2[insideMask]; for (int i = triangles.length; (i -= 4) >= 0;) - surfaceReader.addTriangleCheck(edgePointIndexes[triangles[i]], - edgePointIndexes[triangles[i + 1]], - edgePointIndexes[triangles[i + 2]], triangles[i + 3], - isCutoffAbsolute); + addTriangle(triangles[i], triangles[i + 1], + triangles[i + 2], triangles[i + 3]); } } } @@ -304,6 +299,16 @@ return edgeData.toString(); } + Vector3f vTemp = new Vector3f(); + + private void addTriangle(int ia, int ib, int ic, int edgeType) { + + surfaceReader.addTriangleCheck(edgePointIndexes[ia], + edgePointIndexes[ib], edgePointIndexes[ic], + edgeType, isCutoffAbsolute); + } + + private BitSet bsValues = new BitSet(); private float getValue(int i, int x, int y, int z, int pt, float[] tempValues) { @@ -358,8 +363,7 @@ private int[] edgeVertexPlanes; private boolean processOneCubical(int insideMask, int x, int y, int z, int pt) { - - + /* * The key to the algorithm is that we have a catalog that * maps the inside-vertex mask to an edge mask, and then @@ -408,18 +412,17 @@ //for (int i =0; i < 8; i++) System.out.print("\nvpi for cell " + pt + ": vertex " + i + ": " + voxelPointIndexes[i] + " " + Integer.toBinaryString(edgeMask)); boolean isNaN = false; for (int iEdge = 12; --iEdge >= 0;) { - + // bit set to one means it's a relevant edge - + int xEdge = Pwr2[iEdge]; if ((edgeMask & xEdge) == 0) continue; - - + // if we have a point already, we don't need to check this edge. // for triangles, this will be an index into an array; // for just creating JVXL files, this can just be 0 - + int iPlane = edgeVertexPlanes[iEdge]; int iPt = (pt + linearOffsets[edgeVertexPointers[iEdge]]) % yzCount; int iType = edgeTypeTable[iEdge]; @@ -427,46 +430,45 @@ //System.out.println(x + " " + y + " " + z + " " + pt + " iEdge=" + iEdge + " p=" + iPlane + " t=" + iType + " e=" + ePt + " i=" + iPt + " index=" + edgePointIndexes[iEdge]); if (index >= 0) continue; // propagated from neighbor - + // here's an edge that has to be checked. - + // get the vertex numbers 0 - 7 - + int vertexA = edgeVertexes[iEdge << 1]; int vertexB = edgeVertexes[(iEdge << 1) + 1]; - + // pick up the actual value at each vertex // this array of 8 values is updated as we go. - + float valueA = vertexValues[vertexA]; float valueB = vertexValues[vertexB]; - + // we allow for NaN values -- missing triangles - + if (Float.isNaN(valueA) || Float.isNaN(valueB)) isNaN = true; - + // the exact point position -- not important for just // creating the JVXL file. In that case, all you // need are the two values valueA and valueB and the cutoff. // from those you can define the fractional offset - + // here is where we get the value and assign the point for that edge // it is where the JVXL surface data line is appended - - volumeData.voxelPtToXYZ(x, y, z, pt0); - pointA.add(pt0, voxelVertexVectors[vertexA]); - //System.out.print("edge" + iEdge); + calcVertexPoint(x, y, z, vertexA, pointA); + //System.out.print("edge" + iEdge); + edgeCount++; - - edgePointIndexes[iEdge] = isoPointIndexPlanes[iPlane][iPt][iType] = surfaceReader.getSurfacePointIndexAndFraction(cutoff, - isCutoffAbsolute, x, y, z, cubeVertexOffsets[vertexA], vertexA, - vertexB, valueA, valueB, pointA, edgeVectors[iEdge], - iType == contourType, fReturn); - - edgeData.append(JvxlReader.jvxlFractionAsCharacter(fReturn[0])); + + edgePointIndexes[iEdge] = isoPointIndexPlanes[iPlane][iPt][iType] = surfaceReader + .getSurfacePointIndexAndFraction(cutoff, isCutoffAbsolute, x, y, z, + cubeVertexOffsets[vertexA], vertexA, vertexB, valueA, valueB, + pointA, edgeVectors[iEdge], iType == contourType, fReturn); + + edgeData.append(JvxlReader.jvxlFractionAsCharacter(fReturn[0])); } //System.out.println(""); return !isNaN; @@ -479,7 +481,7 @@ pt.add(pt0, voxelVertexVectors[vertex]); } - private static Vector3f[] cubeVertexVectors = { + private final static Vector3f[] cubeVertexVectors = { new Vector3f(0, 0, 0), new Vector3f(1, 0, 0), new Vector3f(1, 0, 1), Modified: trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -396,6 +396,8 @@ Object ret = super.getProperty(property, index); if (ret != null) return ret; + if (property == "area") + return new Float((thisMesh == null ? Float.NaN : thisMesh.calculateArea())); if (thisMesh == null) return "no current isosurface"; if (property == "plane") Modified: trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -46,6 +46,7 @@ public int vertexIncrement = 1; public int firstRealVertex = -1; public boolean hasGridPoints; + float calculatedArea = Float.NaN; public float[] vertexValues; public short[] vertexColixes; @@ -142,6 +143,37 @@ return addVertexCopy(vertex); } + public float calculateArea() { + // If you were doing something with the triangle vertics + // Say, for example, summing the area, then here you would + // need to retrieve the saved coordinates from some other array + // for each of the three points ia, ib, and ic, + // and then process them. + + if (!Float.isNaN(calculatedArea)) + return calculatedArea; + calculatedArea = 0; + Vector3f vTemp = new Vector3f(); + for (int i = polygonCount; --i >= 0;) { + int[] vertexIndexes = polygonIndexes[i]; + if (vertexIndexes == null) + continue; + int iA = vertexIndexes[0]; + int iB = vertexIndexes[1]; + int iC = vertexIndexes[2]; + if (Float.isNaN(vertexValues[iA]) || Float.isNaN(vertexValues[iB]) + || Float.isNaN(vertexValues[iC])) + continue; + Vector3f ab = new Vector3f(vertices[iB]); + ab.sub(vertices[iA]); + Vector3f ac = new Vector3f(vertices[iC]); + ac.sub(vertices[iA]); + vTemp.cross(ab, ac); + calculatedArea += vTemp.length() / 2; + } + return calculatedArea; + } + public void setTranslucent(boolean isTranslucent, float iLevel) { super.setTranslucent(isTranslucent, iLevel); if (vertexColixes != null) Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -10636,6 +10636,7 @@ boolean isPmesh = (iShape == JmolConstants.SHAPE_PMESH); boolean surfaceObjectSeen = false; boolean planeSeen = false; + boolean doCalcArea = false; boolean isCavity = false; boolean isFxy = false; float[] nlmZ = new float[5]; @@ -10923,6 +10924,11 @@ i = iToken; break; } + if (str.equalsIgnoreCase("AREA")) { + doCalcArea = true; + i = iToken; + break; + } if (str.equalsIgnoreCase("ATOMICORBITAL") || str.equalsIgnoreCase("ORBITAL")) { surfaceObjectSeen = true; @@ -11298,6 +11304,11 @@ surfaceObjectSeen = true; } + float area = (doCalcArea ? ((Float) viewer + .getShapeProperty(iShape, "area")).floatValue() : Float.NaN); + if (doCalcArea) + viewer.setFloatProperty("isosurfaceArea", area); + if (surfaceObjectSeen && isIsosurface && !isSyntaxCheck) { setShapeProperty(iShape, "finalize", null); Integer n = (Integer) viewer.getShapeProperty(iShape, "count"); @@ -11309,8 +11320,12 @@ if (dataRange != null && dataRange[0] != dataRange[1]) s += "\ncolor range " + dataRange[2] + " " + dataRange[3] + "; mapped data range " + dataRange[0] + " to " + dataRange[1]; + if (doCalcArea) + s += "; isosurfaceArea = " + area; showString(s); } + } else if (doCalcArea) { + showString("isosurfaceArea = " + area); } if (translucency != null) setShapeProperty(iShape, "translucency", translucency); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-02-13 00:04:43 UTC (rev 10641) @@ -3,6 +3,8 @@ version=11.7.26_dev +# new feature: isosurface AREA reports the area of an isosurface and stores the number in variable isosurfaceArea +# new feature: ASimpleJvxlWriter can calculate the area of the surface # bug fix: Spartan reader reads MOs improperly when only a partials set of MOs is included in the file # bug fix: Some Spartan files not reading: Compound Document not properly finding root directory block # code: rewritten code for Marching Cubes no longer requires 2D array of cube data Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -836,6 +836,7 @@ scriptWindow.dispose(); } } catch (Exception e) { + System.out.println("frame disposal exception"); // ignore } } Modified: trunk/Jmol/src/org/openscience/jvxl/simplewriter/ASimpleJvxlWriter.java =================================================================== --- trunk/Jmol/src/org/openscience/jvxl/simplewriter/ASimpleJvxlWriter.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/openscience/jvxl/simplewriter/ASimpleJvxlWriter.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -29,24 +29,24 @@ import java.io.OutputStreamWriter; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Vector; public class ASimpleJvxlWriter { // example for how to create simple JVXL files from cube data // no color mapping, no planes, just simple surfaces. - + public static void main(String[] args) { + // parameters that need setting: - // parameters that need setting: - String outputFile = "c:/temp/simple.jvxl"; float cutoff = 0.01f; boolean isCutoffAbsolute = false; - int nX = 30; - int nY = 30; - int nZ = 30; - + int nX = 31; + int nY = 31; + int nZ = 31; + /* * timing: SimpleMarchingCubes with 100,100,100: * @@ -58,8 +58,8 @@ * */ String title = "created by SimpleJvxlWriter " - + new SimpleDateFormat("yyyy-MM-dd', 'HH:mm").format(new Date()) - + "\naddional comment line\n"; + + new SimpleDateFormat("yyyy-MM-dd', 'HH:mm").format(new Date()) + + "\naddional comment line\n"; VolumeData volumeData; VoxelDataCreator vdc; @@ -72,22 +72,32 @@ volumeData.setVolumetricVector(2, 0f, 0f, 1f); volumeData.setUnitVectors(); volumeData.setVoxelCounts(nX, nY, nZ); - + vdc = new VoxelDataCreator(volumeData); vdc.createVoxelData(); jvxlData = new JvxlData(); jvxlData.cutoff = cutoff; jvxlData.isCutoffAbsolute = isCutoffAbsolute; + + // areaReturn and surfacePointsReturn are optional + // -- set to null for faster calculation of JVXL data - + float[] areaReturn = new float[1]; // or null; + Vector surfacePointsReturn = new Vector(); // or null; + jvxlData.isXLowToHigh = false; - writeFile(outputFile+"A", JvxlWrite.jvxlGetData(null, jvxlData, volumeData, title)); + writeFile(outputFile + "A", JvxlWrite.jvxlGetData(null, jvxlData, + volumeData, title, surfacePointsReturn, areaReturn)); + + if (areaReturn != null) + System.out.println("calc area = " + areaReturn[0] + " for " + surfacePointsReturn.size() + " surface points"); // streaming option: null voxelData volumeData.setVoxelData(null); jvxlData.isXLowToHigh = true; - writeFile(outputFile+"B", JvxlWrite.jvxlGetData(vdc, jvxlData, volumeData, title)); - + writeFile(outputFile + "B", JvxlWrite.jvxlGetData(vdc, jvxlData, + volumeData, title, surfacePointsReturn, areaReturn)); + System.out.flush(); System.exit(0); } Modified: trunk/Jmol/src/org/openscience/jvxl/simplewriter/JvxlWrite.java =================================================================== --- trunk/Jmol/src/org/openscience/jvxl/simplewriter/JvxlWrite.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/openscience/jvxl/simplewriter/JvxlWrite.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -24,6 +24,7 @@ package org.openscience.jvxl.simplewriter; import java.util.BitSet; +import java.util.Vector; import javax.vecmath.Point3f; @@ -42,7 +43,10 @@ public JvxlWrite() { } - public static String jvxlGetData(VoxelDataCreator vdc, JvxlData jvxlData, VolumeData volumeData, String title) { + public static String jvxlGetData(VoxelDataCreator vdc, JvxlData jvxlData, + VolumeData volumeData, String title, + Vector surfacePointsReturn, + float[] areaReturn) { // if the StringBuffer is not empty, it should have two comment lines // that do not start with # already present. StringBuffer sb = new StringBuffer(); @@ -51,17 +55,22 @@ Point3f[] atomXYZ = null; int[] atomNo = null; int nAtoms = Integer.MAX_VALUE; - jvxlCreateHeader(volumeData, nAtoms, atomXYZ, atomNo, jvxlData.isXLowToHigh, sb); + jvxlCreateHeader(volumeData, nAtoms, atomXYZ, atomNo, + jvxlData.isXLowToHigh, sb); jvxlData.jvxlFileHeader = sb.toString(); int[] counts = volumeData.getVoxelCounts(); jvxlData.nPointsX = counts[0]; jvxlData.nPointsY = counts[1]; jvxlData.nPointsZ = counts[2]; + boolean doCalcArea = (areaReturn != null); SimpleMarchingCubes mc = new SimpleMarchingCubes(vdc, volumeData, - jvxlData.cutoff, jvxlData.isCutoffAbsolute, jvxlData.isXLowToHigh); + jvxlData.cutoff, jvxlData.isCutoffAbsolute, jvxlData.isXLowToHigh, + surfacePointsReturn, doCalcArea); jvxlData.jvxlEdgeData = mc.getEdgeData(); setSurfaceInfoFromBitSet(jvxlData, mc.getBsVoxels()); jvxlData.jvxlDefinitionLine = jvxlGetDefinitionLine(jvxlData); + if (doCalcArea) + areaReturn[0] = mc.getCalculatedArea(); return jvxlGetFile(jvxlData); } Modified: trunk/Jmol/src/org/openscience/jvxl/simplewriter/SimpleMarchingCubes.java =================================================================== --- trunk/Jmol/src/org/openscience/jvxl/simplewriter/SimpleMarchingCubes.java 2009-02-11 22:01:51 UTC (rev 10640) +++ trunk/Jmol/src/org/openscience/jvxl/simplewriter/SimpleMarchingCubes.java 2009-02-13 00:04:43 UTC (rev 10641) @@ -24,8 +24,11 @@ package org.openscience.jvxl.simplewriter; import java.util.BitSet; +import java.util.Vector; +import javax.vecmath.Point3f; import javax.vecmath.Point3i; +import javax.vecmath.Vector3f; //import org.jmol.util.Logger; @@ -48,6 +51,16 @@ private float cutoff; private boolean isCutoffAbsolute; private boolean isXLowToHigh; + private boolean doCalcArea; + private boolean doSaveSurfacePoints; + private float calculatedArea = Float.NaN; + private Vector surfacePoints; + + + public float getCalculatedArea() { + return calculatedArea; + } + private StringBuffer fractionData = new StringBuffer(); private int cubeCountX, cubeCountY, cubeCountZ; @@ -67,21 +80,30 @@ private VoxelDataCreator vdc; - public SimpleMarchingCubes(VoxelDataCreator vdc, VolumeData volumeData, float cutoff, - boolean isCutoffAbsolute , boolean isXLowToHigh) { - + public SimpleMarchingCubes(VoxelDataCreator vdc, VolumeData volumeData, + float cutoff, boolean isCutoffAbsolute, boolean isXLowToHigh, + Vector surfacePointsReturn, boolean doCalcArea) { + // when just creating a JVXL file all you really need are: // // volumeData.voxelData[x][y][z] // cutoff // - + // also includes the option to return a Vector of surfacePoints + // and/or calculate the area of the surface. + // + this.vdc = vdc; this.volumeData = volumeData; this.cutoff = cutoff; this.isCutoffAbsolute = isCutoffAbsolute; this.isXLowToHigh = isXLowToHigh; - + this.doCalcArea = doCalcArea; + surfacePoints = surfacePointsReturn; + if (surfacePoints == null && doCalcArea) + surfacePoints = new Vector(); + doSaveSurfacePoints = (surfacePoints != null); + if (vdc == null) { mode = MODE_CUBE; } else { @@ -92,11 +114,14 @@ cubeCountY = (nY = volumeData.voxelCounts[1]) - 1; cubeCountZ = (nZ = volumeData.voxelCounts[2]) - 1; yzCount = nY * nZ; - edgeVertexPointers = (isXLowToHigh ? edgeVertexPointersLowToHigh : edgeVertexPointersHighToLow); - edgeVertexPlanes = (isXLowToHigh ? edgeVertexPlanesLowToHigh : edgeVertexPlanesHighToLow); + edgeVertexPointers = (isXLowToHigh ? edgeVertexPointersLowToHigh + : edgeVertexPointersHighToLow); + edgeVertexPlanes = (isXLowToHigh ? edgeVertexPlanesLowToHigh + : edgeVertexPlanesHighToLow); isoPointIndexPlanes = new int[2][yzCount][3]; xyPlanes = (mode == MODE_GETXYZ ? new float[2][yzCount] : null); setLinearOffsets(); + calcVoxelVertexVectors(); } private final float[] vertexValues = new float[8]; @@ -108,37 +133,47 @@ int edgeCount; - /* Note to Jason from Bob: - * - * To just create a JVXL file, you need these five methods. - * Their output is the fractionData string buffer and the - * number of surface points - * - * inputs required: - * - * 1) volumeData.voxelData[x][y][z] - * 2) cutoff - * 3) values created in MarchingCubes constructor - * - * The first four methods are in org.jmol.jvxl.calc.MarchingCubes.java - * - * generateSurfaceData -- isXLowToHigh false; isContoured false - * -- triangle stuff at end not needed - * propagateNeighborPointIndexes -- EXACTLY as is, no changes allowed - * isInside -- EXACTLY as is -- defines what "inside" means - * processOneCubical -- EXACTLY as is, no changes at all - * SurfaceReader.getSurfacePointIndex -- your job - * -- receives the point value data and positions - * -- responsible for creating the fractionData character buffer - * -- just return 0 since you are not creating triangles - * - */ + ////// the following methods are only necessary if working with triangles: + + private final Vector3f[] voxelVertexVectors = new Vector3f[8]; + private final Vector3f[] edgeVectors = new Vector3f[12]; + { + for (int i = 12; --i >= 0;) + edgeVectors[i] = new Vector3f(); + for (int i = 8; --i >= 0;) + vertexPoints[i] = new Point3i(); + } + + private void calcVoxelVertexVectors() { + // only necessary if working with the surface points + volumeData.setMatrix(); + for (int i = 8; --i >= 0;) + volumeData.transform(cubeVertexVectors[i], + voxelVertexVectors[i] = new Vector3f()); + for (int i = 12; --i >= 0;) + edgeVectors[i].sub(voxelVertexVectors[edgeVertexes[i + i + 1]], + voxelVertexVectors[edgeVertexes[i + i]]); + } + + private final static Vector3f[] cubeVertexVectors = { + new Vector3f(0, 0, 0), + new Vector3f(1, 0, 0), + new Vector3f(1, 0, 1), + new Vector3f(0, 0, 1), + new Vector3f(0, 1, 0), + new Vector3f(1, 1, 0), + new Vector3f(1, 1, 1), + new Vector3f(0, 1, 1) }; + //////// + + private static int[] xyPlanePts = new int[] { 0, 1, 1, 0, 0, 1, 1, 0 }; - //private final int[] edgePointIndexes = new int[12]; + + private final int[] edgePointIndexes = new int[12]; private int[][][] isoPointIndexPlanes; private float[][] xyPlanes; @@ -161,6 +196,11 @@ * Feb 10, 2009 -- Bob Hanson */ + edgeCount = 0; + calculatedArea = 0; + if (doSaveSurfacePoints) + surfacePoints.clear(); + int x0, x1, xStep, ptStep, pt, ptX; if (isXLowToHigh) { x0 = 0; @@ -254,14 +294,14 @@ // the inside mask serves to define the triangles necessary // if just creating JVXL files, this step is unnecessary - /* + + if (!doCalcArea) + continue; byte[] triangles = triangleTable2[insideMask]; for (int i = triangles.length; (i -= 4) >= 0;) - surfaceReader.addTriangleCheck(edgePointIndexes[triangles[i]], - edgePointIndexes[triangles[i + 1]], - edgePointIndexes[triangles[i + 2]], triangles[i + 3], - isCutoffAbsolute); - */ + addTriangle(triangles[i], triangles[i + 1], + triangles[i + 2],triangles[i + 3]); + } } } @@ -269,6 +309,31 @@ return fractionData.toString(); } + Vector3f vTemp = new Vector3f(); + + private void addTriangle(int ia, int ib, int ic, int edgeType) { + + // If you were doing something with the triangle vertics + // Say, for example, summing the area, then here you would + // need to retrieve the saved coordinates from some other array + // for each of the three points ia, ib, and ic, + // and then process them. + + Point3f pta = (Point3f) surfacePoints.get(edgePointIndexes[ia]); + Point3f ptb = (Point3f) surfacePoints.get(edgePointIndexes[ib]); + Point3f ptc = (Point3f) surfacePoints.get(edgePointIndexes[ic]); + + Vector3f ab = new Vector3f(ptb); + ab.sub(pta); + Vector3f ac = new Vector3f(ptc); + ac.sub(pta); + vTemp.cross(ab, ac); + float area = vTemp.length() / 2; + calculatedArea += area; + + } + + public static boolean isInside(float voxelValue, float max, boolean isAbsolute) { return ((max > 0 && (isAbsolute ? Math.abs(voxelValue) : voxelValue) >= max) || (max <= 0 && voxelValue <= max)); } @@ -287,6 +352,9 @@ return value; } + private final Point3f pt0 = new Point3f(); + private final Point3f pointA = new Point3f(); + private static final int[] Pwr2 = new int[] { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 }; @@ -384,7 +452,7 @@ int iPlane = edgeVertexPlanes[iEdge]; int iPt = (pt + linearOffsets[edgeVertexPointers[iEdge]]) % yzCount; int iType = edgeTypeTable[iEdge]; - int index = /*edgePointIndexes[iEdge] =*/ isoPointIndexPlanes[iPlane][iPt][iType]; + int index = edgePointIndexes[iEdge] = isoPointIndexPlanes[iPlane][iPt][iType]; //System.out.println(x + " " + y + " " + z + " " + pt + " iEdge=" + iEdge + " p=" + iPlane + " t=" + iType + " e=" + ePt + " i=" + iPt + " index=" + edgePointIndexes[iEdge]); if (index >= 0) continue; // propagated from neighbor @@ -415,16 +483,33 @@ // here is where we get the value and assign the point for that edge // it is where the JVXL surface data line is appended -// edgePointIndexes[iEdge] = - isoPointIndexPlanes[iPlane][iPt][iType] = edgeCount++; + if (doSaveSurfacePoints) { + volumeData.voxelPtToXYZ(x, y, z, pt0); + pointA.add(pt0, voxelVertexVectors[vertexA]); + } + float f = (cutoff - valueA) / (valueB - valueA); + edgePointIndexes[iEdge] = isoPointIndexPlanes[iPlane][iPt][iType] = + newVertex(pointA, edgeVectors[iEdge], f); //System.out.println(" pt=" + pt + " edge" + iEdge + " xyz " + x + " " + y + " " + z + " vertexAB=" + vertexA + " " + vertexB + " valueAB=" + valueA + " " + valueB + " f= " + (cutoff - valueA) / (valueB - valueA)); - float f = (cutoff - valueA) / (valueB - valueA); //System.out.println(f); fractionData.append(JvxlWrite.jvxlFractionAsCharacter(f)); + } return !isNaN; } + private int newVertex(Point3f pointA, Vector3f edgeVector, float f) { + // you could do something with this point if you wanted to + // for example, + + if (doSaveSurfacePoints) { + Point3f pt = new Point3f(); + pt.scaleAdd(f, edgeVector, pointA); + surfacePoints.addElement(pt); + } + return edgeCount++; + } + private final int[] linearOffsets = new int[8]; /* @@ -577,7 +662,8 @@ /* -- not needed just for JVXL writer * -- included here for reference or for users who * -- want to produce triangles using this code. - + */ + private final static byte[][] triangleTable2 = { null, { 0, 8, 3, 7 }, { 0, 1, 9, 7 }, { 1, 8, 3, 6, 9, 8, 1, 5 }, { 1, 2, 10, 7 }, { 0, 8, 3, 7, 1, 2, 10, 7 }, { 9, 2, 10, 6, 0, 2, 9, 5 }, @@ -783,5 +869,5 @@ { 2, 3, 8, 3, 2, 8, 10, 4, 10, 8, 9, 6 }, { 9, 10, 2, 3, 0, 9, 2, 5 }, { 2, 3, 8, 3, 2, 8, 10, 4, 0, 1, 8, 5, 1, 10, 8, 1 }, { 1, 10, 2, 7 }, { 1, 3, 8, 3, 9, 1, 8, 5 }, { 0, 9, 1, 7 }, { 0, 3, 8, 7 }, null }; - */ + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2009-04-21 23:10:27
|
Revision: 10831 http://jmol.svn.sourceforge.net/jmol/?rev=10831&view=rev Author: hansonr Date: 2009-04-21 23:10:21 +0000 (Tue, 21 Apr 2009) Log Message: ----------- version=11.7.34_dev # new feature \? in atom name escapes ? wildcard. Still no * in names, # but you can use multiple ?s: select ?\? or ??\? or ???\? or ????\? # new feature: isosurface FunctionXYZ -- same as FunctionXY, but must return float[][][] # -- note, this involves an additional required function in interface JmolStatusListener # public float[][][] functionXYZ(String functionName, int nx, int ny, int nz); Modified Paths: -------------- trunk/Jmol/src/org/jmol/api/JmolStatusListener.java trunk/Jmol/src/org/jmol/applet/Jmol.java trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java trunk/Jmol/src/org/jmol/jvxl/readers/Parameters.java trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java trunk/Jmol/src/org/jmol/modelset/AtomCollection.java trunk/Jmol/src/org/jmol/util/ColorEncoder.java trunk/Jmol/src/org/jmol/util/TextFormat.java trunk/Jmol/src/org/jmol/viewer/Compiler.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/StatusManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java trunk/Jmol/src/org/openscience/jmol/app/Jmol.java Added Paths: ----------- trunk/Jmol/src/org/jmol/jvxl/readers/IsoFxyzReader.java Modified: trunk/Jmol/src/org/jmol/api/JmolStatusListener.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolStatusListener.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/api/JmolStatusListener.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -39,10 +39,29 @@ public String eval(String strEval); + /** + * for isosurface FUNCTIONXY + * + * @param functionName + * @param x + * @param y + * @return 2D array or null + */ public float[][] functionXY(String functionName, int x, int y); /** + * for isosurface FUNCTIONXYZ * + * @param functionName + * @param nx + * @param ny + * @param nz + * @return 3D array or null + */ + public float[][][] functionXYZ(String functionName, int nx, int ny, int nz); + + /** + * * @param fileName * @param type * @param text_or_bytes @@ -60,4 +79,5 @@ public void showUrl(String url); public String dialogAsk(String type, String fileName); + } Modified: trunk/Jmol/src/org/jmol/applet/Jmol.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jmol.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/applet/Jmol.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -1159,6 +1159,25 @@ return fxy; } + public float[][][] functionXYZ(String functionName, int nX, int nY, int nZ) { + float[][][] fxyz = new float[Math.abs(nX)][Math.abs(nY)][Math.abs(nZ)]; + if (!mayScript || nX == 0 || nY == 0 || nZ == 0) + return fxyz; + try { + JSObject jsoWindow = JSObject.getWindow(appletWrapper); + jsoWindow.call(functionName, new Object[] { htmlName, + new Integer(nX), new Integer(nY), new Integer(nZ), fxyz }); + } catch (Exception e) { + Logger.error("Exception " + e.getMessage() + " for " + functionName + " with nX, nY, nZ: " + nX + + " " + nY + " " + nZ); + } + // for (int i = 0; i < nX; i++) + // for (int j = 0; j < nY; j++) + // for (int k = 0; k < nZ; k++) + // System.out.println("i j k fxyz " + i + " " + j + " " + k + " " + fxyz[i][j][k]); + return fxyz; + } + public void handlePopupMenu(int x, int y) { if (!popupMenuAllowed) { showConsole(true); Modified: trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -119,7 +119,7 @@ edgeVertexPointers = (isXLowToHigh ? edgeVertexPointersLowToHigh : edgeVertexPointersHighToLow); edgeVertexPlanes = (isXLowToHigh ? edgeVertexPlanesLowToHigh : edgeVertexPlanesHighToLow); isoPointIndexPlanes = new int[2][yzCount][3]; - xyPlanes = (mode == MODE_GETXYZ ? new float[2][yzCount] : null); + yzPlanes = (mode == MODE_GETXYZ ? new float[2][yzCount] : null); setLinearOffsets(); calcVoxelVertexVectors(); } @@ -156,13 +156,13 @@ * */ - private static int[] xyPlanePts = new int[] { + private static int[] yzPlanePts = new int[] { 0, 1, 1, 0, 0, 1, 1, 0 }; private final int[] edgePointIndexes = new int[12]; private int[][][] isoPointIndexPlanes; - private float[][] xyPlanes; + private float[][] yzPlanes; private int[][] resetIndexPlane(int[][] plane) { for (int i = 0; i < yzCount; i++) @@ -213,9 +213,9 @@ // obtaining the grid data point by point if (mode == MODE_GETXYZ) { - float[] plane = xyPlanes[0]; - xyPlanes[0] = xyPlanes[1]; - xyPlanes[1] = plane; + float[] plane = yzPlanes[0]; + yzPlanes[0] = yzPlanes[1]; + yzPlanes[1] = plane; } // we swap the edge vertex index planes @@ -244,7 +244,7 @@ switch (mode) { case MODE_GETXYZ: vertexValues[i] = getValue(i, x + offset.x, y + offset.y, z - + offset.z, pti, xyPlanes[xyPlanePts[i]]); + + offset.z, pti, yzPlanes[yzPlanePts[i]]); isInside = bsVoxels.get(pti); break; case MODE_BITSET: @@ -275,6 +275,8 @@ } ++surfaceCount; + //System.out.println("insideCount " + insideCount + " x y z value mask: " + x + " " + y + " " + z + " " + vertexValues[0] + " " + Integer.toHexString(insideMask)); + // This cube is straddling the cutoff. We must check all edges if (!processOneCubical(insideMask, x, y, z, pt) Added: trunk/Jmol/src/org/jmol/jvxl/readers/IsoFxyzReader.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/readers/IsoFxyzReader.java (rev 0) +++ trunk/Jmol/src/org/jmol/jvxl/readers/IsoFxyzReader.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -0,0 +1,64 @@ +/* $RCSfile$ + * $Author: hansonr $ + * $Date: 2007-03-30 11:40:16 -0500 (Fri, 30 Mar 2007) $ + * $Revision: 7273 $ + * + * Copyright (C) 2007 Miguel, Bob, Jmol Development + * + * Contact: ha...@st... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.jmol.jvxl.readers; + +import javax.vecmath.Point3f; +import javax.vecmath.Point4f; + +class IsoFxyzReader extends VolumeDataReader { + + IsoFxyzReader(SurfaceGenerator sg) { + super(sg); + precalculateVoxelData = false; + } + + private String functionName; + private float[][][] data; + //private boolean isAngstroms; NAH! Forget BOHRS! This was silly. + //private boolean isPlanarMapping; + + protected void setup() { + //isAngstroms = params.isAngstroms; + //isPlanarMapping = (params.thePlane != null || params.state == Parameters.STATE_DATA_COLORED); + functionName = (String) params.functionXYinfo.get(0); + jvxlFileHeaderBuffer = new StringBuffer(); + jvxlFileHeaderBuffer.append("functionXYZ\n").append(functionName).append("\n"); + volumetricOrigin.set((Point3f) params.functionXYinfo.get(1)); + //if (!isAngstroms) + //volumetricOrigin.scale(ANGSTROMS_PER_BOHR); + for (int i = 0; i < 3; i++) { + Point4f info = (Point4f) params.functionXYinfo.get(i + 2); + voxelCounts[i] = Math.abs((int) info.x); + volumetricVectors[i].set(info.y, info.z, info.w); + //if (!isAngstroms) + //volumetricVectors[i].scale(ANGSTROMS_PER_BOHR); + } + data = (float[][][]) params.functionXYinfo.get(5); + JvxlReader.jvxlCreateHeaderWithoutTitleOrAtoms(volumeData, jvxlFileHeaderBuffer); + } + + public float getValue(int x, int y, int z) { + return data[x][y][z]; + } +} Property changes on: trunk/Jmol/src/org/jmol/jvxl/readers/IsoFxyzReader.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/Jmol/src/org/jmol/jvxl/readers/Parameters.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/readers/Parameters.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/jvxl/readers/Parameters.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -160,6 +160,7 @@ final static int SURFACE_LOBE = 4 | IS_SILENT; final static int SURFACE_LCAOCARTOON = 5 | IS_SILENT; final static int SURFACE_FUNCTIONXY = 6 | CAN_CONTOUR; + final static int SURFACE_FUNCTIONXYZ = 7; // getSurface or mapColor: final static int SURFACE_SOLVENT = 11 | IS_SOLVENTTYPE | NO_ANISOTROPY; @@ -500,6 +501,13 @@ isEccentric = isAnisotropic = false; } + void setFunctionXYZ(Vector value) { + dataType = SURFACE_FUNCTIONXYZ; + functionXYinfo = (Vector) value; + cutoff = Float.MIN_VALUE; + isEccentric = isAnisotropic = false; + } + int psi_n = 2; int psi_l = 1; int psi_m = 1; Modified: trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -86,7 +86,7 @@ * * nOutside nInside nOutside nInside... * - * fractions: an ascii list of characters represting the fraction of distance each + * fractions: an ascii list of characters representing the fraction of distance each * encountered surface point is along each voxel cube edge found to straddle the * surface. The order written is dictated by the reader algorithm and is not trivial * to describe. Each ascii character is constructed by taking a base character and @@ -699,6 +699,12 @@ return true; } + if ("functionXYZ" == propertyName) { + params.setFunctionXYZ((Vector) value); + processState(); + return true; + } + if ("lcaoType" == propertyName) { params.setLcao((String) value, colorPtr); return true; @@ -818,6 +824,9 @@ case Parameters.SURFACE_FUNCTIONXY: surfaceReader = new IsoFxyReader(this); break; + case Parameters.SURFACE_FUNCTIONXYZ: + surfaceReader = new IsoFxyzReader(this); + break; case Parameters.SURFACE_MEP: surfaceReader = new IsoMepReader(this); break; Modified: trunk/Jmol/src/org/jmol/modelset/AtomCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -1512,6 +1512,8 @@ return getIdentifierOrNull((String) specInfo); case Token.spec_atom: String atomSpec = ((String) specInfo).toUpperCase(); + if (atomSpec.indexOf("\\?") >= 0) + atomSpec = TextFormat.simpleReplace(atomSpec, "\\?","\1"); /// here xx*yy is NOT changed to "xx??????????yy" for (int i = atomCount; --i >= 0;) if (isAtomNameMatch(atoms[i], atomSpec, false)) @@ -1576,6 +1578,9 @@ // * can be used here, but not with ? //first check with * option OFF BitSet bs = getSpecNameOrNull(identifier, false); + + if (identifier.indexOf("\\?") >= 0) + identifier = TextFormat.simpleReplace(identifier, "\\?","\1"); if (bs != null || identifier.indexOf("?") > 0) return bs; // now check with * option ON @@ -1648,6 +1653,8 @@ /// but not necessarily when coming from getIdentifierOrNull BitSet bs = null; name = name.toUpperCase(); + if (name.indexOf("\\?") >= 0) + name = TextFormat.simpleReplace(name, "\\?","\1"); for (int i = atomCount; --i >= 0;) { String g3 = atoms[i].getGroup3(); if (g3.length() > 0) { Modified: trunk/Jmol/src/org/jmol/util/ColorEncoder.java =================================================================== --- trunk/Jmol/src/org/jmol/util/ColorEncoder.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/util/ColorEncoder.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -52,7 +52,7 @@ private final static String[] colorSchemes = { "roygb", "bgyor", "rwb", "bwr", "low", "high", BYELEMENT_JMOL, BYELEMENT_RASMOL, BYRESIDUE_SHAPELY, - BYRESIDUE_AMINO, "user", "resu"}; + BYRESIDUE_AMINO, "colorRGB", "user", "resu"}; private final static int schemeIndex(String colorScheme) { for (int i = 0; i < colorSchemes.length; i++) @@ -72,8 +72,9 @@ public final static int RASMOL = 7; public final static int SHAPELY = 8; public final static int AMINO = 9; - public final static int USER = -10; - public final static int RESU = -11; + public final static int COLOR_RGB = 10; + public final static int USER = -11; + public final static int RESU = -12; private int palette = ROYGB; @@ -312,6 +313,8 @@ return ArrayUtil.arrayCopy(argbsShapely, 0, -1, false); case AMINO: return ArrayUtil.arrayCopy(argbsAmino, 0, -1, false); + case COLOR_RGB: + return new int[0]; case USER: return ArrayUtil.arrayCopy(userScale, 0, -1, false); case RESU: @@ -362,6 +365,8 @@ return JmolConstants.argbsShapely[colorIndex((int)val, JmolConstants.argbsShapely.length)]; case AMINO: return JmolConstants.argbsAmino[colorIndex((int)val, JmolConstants.argbsAmino.length)]; + case COLOR_RGB: + return (int)val; default: return GRAY; } Modified: trunk/Jmol/src/org/jmol/util/TextFormat.java =================================================================== --- trunk/Jmol/src/org/jmol/util/TextFormat.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/util/TextFormat.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -404,7 +404,6 @@ public static boolean isMatch(String s, String strWildcard, boolean checkStar, boolean allowInitialStar) { - int ich = 0; int cchWildcard = strWildcard.length(); int cchs = s.length(); @@ -454,8 +453,8 @@ char charWild = strWildcard.charAt(ich + i); if (charWild == '?') continue; - if (charWild != s.charAt(i)) - return false; + if (charWild != s.charAt(i) && (charWild != '\1' || s.charAt(i) != '?')) + return false; } return true; } Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -1477,7 +1477,7 @@ case '[': case ']': case '\\': // leftdivide - break; + break; case '&': case '|': if (ichT < cchScript && script.charAt(ichT) == ch) @@ -1510,7 +1510,8 @@ // hack for insertion codes embedded in an atom expression :-( // select c3^a (ch == '^' && ichT > ichToken && Character.isDigit(script - .charAt(ichT - 1)))) + .charAt(ichT - 1))) + || ch == '\\' && ichT + 1 < cchScript && script.charAt(ichT + 1) == '?') ++ichT; break; } Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -2081,6 +2081,8 @@ case Token.fracZ: propertyValue = atom.getFractionalCoord('Z'); return asInt ? propertyValue * 100 : propertyValue; + case Token.color: + return propertyValue = viewer.getColixArgb(atom.getColix()); default: error(ERROR_unrecognizedAtomProperty, Token.nameOf(tokWhat)); } @@ -10757,6 +10759,8 @@ data[iAtom] = atomProperty(atoms[iAtom], tokProperty, false); } } + if (tokProperty == Token.color) + setShapeProperty(iShape, "setColorScheme", "colorRGB"); propertyValue = data; break; case Token.model: @@ -11142,6 +11146,48 @@ isFxy = surfaceObjectSeen = true; break; } + if (str.equalsIgnoreCase("FUNCTIONXYZ")) { + // isosurface functionXYZ "functionName" + // {origin} {ni ix iy iz} {nj jx jy jz} {nk kx ky kz} + Vector v = new Vector(); + if (getToken(++i).tok != Token.string) + error(ERROR_what, + "functionXYZ must be followed by a function name in quotes."); + String fName = parameterAsString(i++); + //override of function or data name when saved as a state + String dataName = extractCommandOption("# DATA"); + if (dataName != null) + fName = dataName; + v.addElement(fName); //(0) = name + v.addElement(getPoint3f(i, false)); //(1) = {origin} + Point4f pt; + int nX, nY, nZ; + int ptX = ++iToken; + v.addElement(pt = getPoint4f(ptX)); //(2) = {ni ix iy iz} + nX = (int) pt.x; + int ptY = ++iToken; + v.addElement(pt = getPoint4f(ptY)); //(3) = {nj jx jy jz} + nY = (int) pt.x; + v.addElement(pt = getPoint4f(++iToken)); //(4) = {nk kx ky kz} + nZ = (int) pt.x; + if (nX == 0 || nY == 0) + error(ERROR_invalidArgument); + if (!isSyntaxCheck) { + float[][][] xyzdata = viewer.functionXYZ(fName, nX, nY, nZ); + nX = Math.abs(nX); + nY = Math.abs(nY); + if (xyzdata == null) { + iToken = ptX; + error(ERROR_what, "xyzdata is null."); + } + v.addElement(xyzdata); //(5) = float[][][] data + } + i = iToken; + propertyName = "functionXYZ"; + propertyValue = v; + isFxy = surfaceObjectSeen = true; + break; + } if (str.equalsIgnoreCase("GRIDPOINTS")) { propertyName = "gridPoints"; break; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-04-21 23:10:21 UTC (rev 10831) @@ -3,6 +3,13 @@ version=11.7.34_dev +# new feature \? in atom name escapes ? wildcard. Still no * in names, +# but you can use multiple ?s: select ?\? or ??\? or ???\? or ????\? + +# new feature: isosurface FunctionXYZ -- same as FunctionXY, but must return float[][][] +# -- note, this involves an additional required function in interface JmolStatusListener +# public float[][][] functionXYZ(String functionName, int nx, int ny, int nz); + # ----------------------------------------------------------------------------- #version=11.7.33 Modified: trunk/Jmol/src/org/jmol/viewer/StatusManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StatusManager.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/viewer/StatusManager.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -563,6 +563,11 @@ jmolStatusListener.functionXY(functionName, nX, nY)); } + float[][][] functionXYZ(String functionName, int nX, int nY, int nZ) { + return (jmolStatusListener == null ? new float[Math.abs(nX)][Math.abs(nY)][Math.abs(nY)] : + jmolStatusListener.functionXYZ(functionName, nX, nY, nZ)); + } + String jsEval(String strEval) { return (jmolStatusListener == null ? "" : jmolStatusListener.eval(strEval)); } Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -2714,6 +2714,11 @@ return dataManager.getDataFloat2D(label); } + float[][][] getDataFloat3D(String label) { + return null; + //not implemented yet return dataManager.getDataFloat3D(label); + } + public float getDataFloat(String label, int atomIndex) { return dataManager.getDataFloat(label, atomIndex); } @@ -6858,6 +6863,33 @@ return fdata; } + float[][][] functionXYZ(String functionName, int nX, int nY, int nZ) { + String data = null; + if (functionName.indexOf("file:") == 0) + data = getFileAsString(functionName.substring(5)); + else if (functionName.indexOf("data3d_") != 0) + return statusManager.functionXYZ(functionName, nX, nY, nZ); + nX = Math.abs(nX); + nY = Math.abs(nY); + nZ = Math.abs(nZ); + float[][][] xyzdata; + if (data == null) { + xyzdata = getDataFloat3D(functionName); + if (xyzdata != null) + return xyzdata; + data = ""; + } + xyzdata = new float[nX][nY][nZ]; + float[] f = new float[nX * nY * nZ]; + Parser.parseFloatArray(data, null, f); + for (int i = 0, n = 0; i < nX; i++) + for (int j = 0; j < nY; j++) + for (int k = 0; k < nZ; k++) + xyzdata[i][j][k] = f[n++]; + return xyzdata; + } + + void getHelp(String what) { if (what.length() > 0 && what.indexOf("?") != 0 && global.helpPath.indexOf("?") < 0) Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2009-04-20 17:04:22 UTC (rev 10830) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2009-04-21 23:10:21 UTC (rev 10831) @@ -1960,21 +1960,41 @@ nX = Math.abs(nX); nY = Math.abs(nY); float[][] f = new float[nX][nY]; - boolean isSecond = (functionName.indexOf("2") >= 0); - + //boolean isSecond = (functionName.indexOf("2") >= 0); for (int i = nX; --i >= 0;) for (int j = nY; --j >= 0;) { - f[i][j] = (float) Math.sqrt(i*i*i + j * j) * (isSecond ? -1 : 1); - + float x = i / 15f - 1; + float y = j / 15f - 1; + f[i][j] = (float) Math.sqrt(x*x + y); + if (Float.isNaN(f[i][j])) + f[i][j] = -(float) Math.sqrt(-x*x - y); // f[i][j] = (isSecond ? (float) ((i + j - nX) / (2f)) : (float) Math // .sqrt(Math.abs(i * i + j * j)) / 2f); //if (i < 10 && j < 10) - //System.out.println(" functionXY " + i + " " + j + " " + f[i][j]); + System.out.println(" functionXY " + i + " " + j + " " + f[i][j]); } return f; // for user-defined isosurface functions (testing only -- bob hanson) } + public float[][][] functionXYZ(String functionName, int nX, int nY, int nZ) { + nX = Math.abs(nX); + nY = Math.abs(nY); + nZ = Math.abs(nZ); + float[][][] f = new float[nX][nY][nZ]; + for (int i = nX; --i >= 0;) + for (int j = nY; --j >= 0;) + for (int k = nZ; --k >= 0;) { + float x = i / ((nX-1)/2f) - 1; + float y = j / ((nY-1)/2f) - 1; + float z = k / ((nZ-1)/2f) - 1; + f[i][j][k] = (float) x*x + y - z*z; + //if (i == 22 || i == 23) + //System.out.println(" functionXYZ " + i + " " + j + " " + k + " " + f[i][j][k]); + } + return f; // for user-defined isosurface functions (testing only -- bob hanson) + } + public Hashtable getRegistryInfo() { return null; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2009-04-29 11:48:55
|
Revision: 10837 http://jmol.svn.sourceforge.net/jmol/?rev=10837&view=rev Author: hansonr Date: 2009-04-29 11:47:50 +0000 (Wed, 29 Apr 2009) Log Message: ----------- version=11.7.34_dev # new feature: application -s - reads input from System.in (untested) (suggestion of Elena Zlateva) Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/Jmol.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-04-29 11:27:20 UTC (rev 10836) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-04-29 11:47:50 UTC (rev 10837) @@ -3,7 +3,8 @@ version=11.7.34_dev -# new feature \? in atom name escapes ? wildcard. Still no * in names, +# new feature: application -s - reads input from System.in (untested) +# new feature: \? in atom name escapes ? wildcard. Still no * in names, # but you can use multiple ?s: select ?\? or ??\? or ???\? or ????\? # new feature: isosurface FunctionXYZ -- same as FunctionXY, but must return float[][][] Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2009-04-29 11:27:20 UTC (rev 10836) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2009-04-29 11:47:50 UTC (rev 10837) @@ -703,7 +703,19 @@ report("Executing script from file: " + scriptFilename); if (haveDisplay) jmol.splash.showStatus(GT._("Executing script file...")); - jmol.viewer.evalFile(scriptFilename); + if (scriptFilename.equals("-")) { + + // -s - option + + Scanner scan = new Scanner(System.in); + String linein = ""; + StringBuffer script = new StringBuffer(); + while((linein = scan.nextLine()) != null) + script.append(linein).append("\n"); + jmol.viewer.script(script.toString()); + } else { + jmol.viewer.evalFile(scriptFilename); + } } // then command script if (script2 != null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2009-10-15 03:35:53
|
Revision: 11588 http://jmol.svn.sourceforge.net/jmol/?rev=11588&view=rev Author: hansonr Date: 2009-10-15 03:35:39 +0000 (Thu, 15 Oct 2009) Log Message: ----------- version=11.9.7_dev zshade, isosurface contour discrete/increment # bug fix: zshade now working correctly # new feature: isosurface ... map CONTOUR DISCRETE [0.5, 1.0, 1.5, 2.0] # new feature: isosurface ... map CONTOUR INCREMENT {0.0, 1.0, 0.2} Modified Paths: -------------- trunk/Jmol/src/org/jmol/g3d/Cylinder3D.java trunk/Jmol/src/org/jmol/g3d/Graphics3D.java trunk/Jmol/src/org/jmol/g3d/Sphere3D.java trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java trunk/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java trunk/Jmol/src/org/jmol/jvxl/readers/Parameters.java trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceRenderer.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/DisplayPanel.java trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java Added Paths: ----------- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java Modified: trunk/Jmol/src/org/jmol/g3d/Cylinder3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Cylinder3D.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/g3d/Cylinder3D.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -68,8 +68,6 @@ boolean clipped; private boolean drawBackside; - private int zShift; - void render(short colixA, short colixB, boolean isScreenedA, boolean isScreenedB, byte endcaps, int diameter, int xA, int yA, int zA, int xB, int yB, int zB) { @@ -91,8 +89,6 @@ dxB = xB - xA; dyB = yB - yA; dzB = zB - zA; - zShift = g3d.getZShift((zA + zB) >> 1); - if (diameter <= 1) { line3d.plotLineDelta(g3d.getColixArgb(colixA), isScreenedA, g3d .getColixArgb(colixB), isScreenedB, xA, yA, zA, dxB, dyB, dzB, @@ -188,7 +184,7 @@ } private void plotRasterBits(int i) { - int fpz = fp8IntensityUp[i] >> (8 + zShift); + int fpz = fp8IntensityUp[i] >> (8); int fpzBack = fpz >> 1; int x = xRaster[i]; int y = yRaster[i]; @@ -427,7 +423,7 @@ } private void plotRaster(int i) { - int fpz = fp8IntensityUp[i] >> (8 + zShift); + int fpz = fp8IntensityUp[i] >> (8); int fpzBack = fpz >> 1; int x = xRaster[i]; int y = yRaster[i]; @@ -602,7 +598,7 @@ g3d.plotPixelClipped(argbEndcap, isScreenedA, (int) xDn, (int) yDn, (int) zDn); } - int fpz = fp8IntensityUp[i] >> (8 + zShift); + int fpz = fp8IntensityUp[i] >> (8); if (argb != 0) { line3d.plotLineDelta(shadesA, isScreenedA, shadesA, isScreenedA, fpz, Modified: trunk/Jmol/src/org/jmol/g3d/Graphics3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Graphics3D.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/g3d/Graphics3D.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -193,10 +193,10 @@ int slab, depth; boolean zShade; int xLast, yLast; - private int[] pbuf; - private int[] pbufT; + int[] pbuf; + int[] pbufT; int[] zbuf; - private int[] zbufT; + int[] zbufT; int bufferSize; //int clipX; @@ -553,15 +553,28 @@ slab = slabValue < 0 ? 0 : slabValue; depth = depthValue < 0 ? 0 : depthValue; this.zShade = zShade; + if (zShade) { + zShadeR = bgcolor & 0xFF; + zShadeG = (bgcolor & 0xFF00) >> 8; + zShadeB = (bgcolor & 0xFF0000) >> 16; + pixel = new ShadePixel(); + } else { + pixel = new Pixel(); + } } + Pixel pixel; + int zShadeR; + int zShadeG; + int zShadeB; + public void setSlab(int slabValue) { slab = slabValue; } - int getZShift(int z) { - return (zShade ? (z - slab) * 5 / (depth - slab): 0); - } +// int getZShift(int z) { +// return (zShade ? (z - slab) * 5 / (depth - slab): 0); +// } private void downsampleFullSceneAntialiasing(boolean downsampleZBuffer) { //System.out.println("downsample " + antialiasThisFrame + " " + downsampleZBuffer + " " + pbuf.length + " " + width); @@ -569,7 +582,7 @@ int offset1 = 0; int offset4 = 0; int bgcheck = bgcolor; - // now is the time we have to put in the correct backgroudn color + // now is the time we have to put in the correct background color // this was a bug in 11.6.0-11.6.2. // we must downsample the Z Buffer if there are translucent @@ -581,7 +594,7 @@ // because the colors will be blurred anyway. if (downsampleZBuffer) - bgcheck += ((bgcheck & 0xFF) == 0xFF ? -1 : 1); + bgcheck += ((bgcheck & 0xFF) == 0xFF ? -1 : 1); for (int i =0; i < pbuf.length; i++) if (pbuf[i] == 0) pbuf[i] = bgcheck; @@ -751,34 +764,54 @@ void setZMargin(int dz) { zMargin = dz; } - + void addPixel(int offset, int z, int p) { - addPixelT(offset, z, p, zbuf, pbuf, zbufT, pbufT, translucencyMask, isPass2, zMargin, bgcolor); + pixel.addPixel(offset, z, p); } - final static void addPixelT(int offset, int z, int p, int[] zbuf, int[] pbuf, int[] zbufT, int[] pbufT, int translucencyMask, boolean isPass2, int zMargin, int bgcolor) { - if (!isPass2) { - zbuf[offset] = z; - pbuf[offset] = p; - return; + class Pixel { + void addPixel(int offset, int z, int p) { + if (!isPass2) { + zbuf[offset] = z; + pbuf[offset] = p; + return; + } + int zT = zbufT[offset]; + if (z < zT) { + // new in front -- merge old translucent with opaque + // if (zT != Integer.MAX_VALUE) + int argb = pbufT[offset]; + if (argb != 0 && zT - z > zMargin) + mergeBufferPixel(pbuf, argb, offset, bgcolor); + zbufT[offset] = z; + pbufT[offset] = p & translucencyMask; + } else if (z == zT) { + } else { + // oops-out of order + if (z - zT > zMargin) + mergeBufferPixel(pbuf, p & translucencyMask, offset, bgcolor); + } } - int zT = zbufT[offset]; - if (z < zT) { - //new in front -- merge old translucent with opaque - //if (zT != Integer.MAX_VALUE) - int argb = pbufT[offset]; - if (argb != 0 && zT - z > zMargin) - mergeBufferPixel(pbuf, argb, offset, bgcolor); - zbufT[offset] = z; - pbufT[offset] = p & translucencyMask; - } else if (z == zT) { - } else { - //oops-out of order - if (z - zT > zMargin) - mergeBufferPixel(pbuf, p & translucencyMask, offset, bgcolor); + } + + class ShadePixel extends Pixel { + void addPixel(int offset, int z, int p) { + if (z <= depth && z >= slab) { + int pR = p & 0xFF; + int pG = (p & 0xFF00) >> 8; + int pB = (p & 0xFF0000) >> 16; + float f = depth - z; + f /= (depth - slab); + pR = zShadeR + (int) (f * (pR - zShadeR)); + pG = zShadeG + (int) (f * (pG - zShadeG)); + pB = zShadeB + (int) (f * (pB - zShadeB)); + p = (pB << 16) + (pG << 8) + pR; + } + super.addPixel(offset, z, p); } } + /** * draws a screened circle ... every other dot is turned on * Modified: trunk/Jmol/src/org/jmol/g3d/Sphere3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/g3d/Sphere3D.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -62,8 +62,6 @@ this.g3d = g3d; } - private int zShift; - private final static int maxSphereCache = 128; private final static int maxOddSizeSphere = 49; final static int maxSphereDiameter = 1000; @@ -200,7 +198,6 @@ this.octantPoints = null; } } else { - zShift = g3d.getZShift(z); int[] ss = getSphereShape(diameter); if (minX < 0 || maxX >= width || minY < 0 || maxY >= height || minZ < slab || z > depth) @@ -232,16 +229,16 @@ int zPixel = z - (packed & 0x7F); if (zPixel < zbuf[offsetSE]) g3d.addPixel(offsetSE, zPixel, - shades[((packed >> 7) & 0x3F) >> zShift]); + shades[((packed >> 7) & 0x3F)]); if (zPixel < zbuf[offsetSW]) g3d.addPixel(offsetSW, zPixel, - shades[((packed >> 13) & 0x3F) >> zShift]); + shades[((packed >> 13) & 0x3F)]); if (zPixel < zbuf[offsetNE]) g3d.addPixel(offsetNE, zPixel, - shades[((packed >> 19) & 0x3F) >> zShift]); + shades[((packed >> 19) & 0x3F)]); if (zPixel < zbuf[offsetNW]) g3d.addPixel(offsetNW, zPixel, - shades[((packed >> 25) & 0x3F) >> zShift]); + shades[((packed >> 25) & 0x3F)]); ++offsetSE; --offsetSW; ++offsetNE; @@ -272,16 +269,16 @@ int zPixel = z - (packed & 0x7F); if ((flipflops & 1) != 0 && zPixel < zbuf[offsetSE]) g3d.addPixel(offsetSE, zPixel, - shades[((packed >> 7) & 0x3F) >> zShift]); + shades[((packed >> 7) & 0x3F)]); if ((flipflops & 2) != 0 && zPixel < zbuf[offsetSW]) g3d.addPixel(offsetSW, zPixel, - shades[((packed >> 13) & 0x3F) >> zShift]); + shades[((packed >> 13) & 0x3F)]); if ((flipflops & 4) != 0 && zPixel < zbuf[offsetNE]) g3d.addPixel(offsetNE, zPixel, - shades[((packed >> 19) & 0x3F) >> zShift]); + shades[((packed >> 19) & 0x3F)]); if ((flipflops & 8) != 0 && zPixel < zbuf[offsetNW]) g3d.addPixel(offsetNW, zPixel, - shades[((packed >> 25) & 0x3F) >> zShift]); + shades[((packed >> 25) & 0x3F)]); ++offsetSE; --offsetSW; ++offsetNE; @@ -347,13 +344,13 @@ && zPixel < zbuf[offsetSE]) { int i = (isCore ? SHADE_SLAB_CLIPPED - 3 + ((randu >> 7) & 0x07) : (packed >> 7) & 0x3F); - g3d.addPixel(offsetSE, zPixel, shades[i >> zShift]); + g3d.addPixel(offsetSE, zPixel, shades[i]); } if (tWestVisible && (addAllPixels || (flipflops & 2) != 0) && zPixel < zbuf[offsetSW]) { int i = (isCore ? SHADE_SLAB_CLIPPED - 3 + ((randu >> 13) & 0x07) : (packed >> 13) & 0x3F); - g3d.addPixel(offsetSW, zPixel, shades[i >> zShift]); + g3d.addPixel(offsetSW, zPixel, shades[i]); } } if (tNorthVisible) { @@ -361,13 +358,13 @@ && zPixel < zbuf[offsetNE]) { int i = (isCore ? SHADE_SLAB_CLIPPED - 3 + ((randu >> 19) & 0x07) : (packed >> 19) & 0x3F); - g3d.addPixel(offsetNE, zPixel, shades[i >> zShift]); + g3d.addPixel(offsetNE, zPixel, shades[i]); } if (tWestVisible && (!tScreened || (flipflops & 8) != 0) && zPixel < zbuf[offsetNW]) { int i = (isCore ? SHADE_SLAB_CLIPPED - 3 + ((randu >> 25) & 0x07) : (packed >> 25) & 0x3F); - g3d.addPixel(offsetNW, zPixel, shades[i >> zShift]); + g3d.addPixel(offsetNW, zPixel, shades[i]); } } } @@ -451,7 +448,7 @@ if (zbuf[offset] <= z0) continue; int x8 = ((j * xSign + radius) << 8) / dDivisor; - g3d.addPixel(offset,z0, shades[Shade3D.sphereIntensities[((y8 << 8) + x8) >> zShift]]); + g3d.addPixel(offset,z0, shades[Shade3D.sphereIntensities[((y8 << 8) + x8)]]); } } } @@ -551,7 +548,7 @@ continue; switch(mode) { case 0: //core - iShade = (SHADE_SLAB_CLIPPED - 3 + ((randu >> 8) & 0x07)) >> zShift; + iShade = (SHADE_SLAB_CLIPPED - 3 + ((randu >> 8) & 0x07)); randu = ((randu << 16) + (randu << 1) + randu) & 0x7FFFFFFF; mode = 1; break; @@ -562,7 +559,7 @@ break; default: //sphere int x8 = ((j * xSign + radius) << 8) / dDivisor; - iShade = Shade3D.sphereIntensities[(y8 << 8) + x8] >> zShift; + iShade = Shade3D.sphereIntensities[(y8 << 8) + x8]; break; } g3d.addPixel(offset, zPixel, shades[iShade]); Modified: trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/jvxl/calc/MarchingCubes.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -264,6 +264,7 @@ if (isSquared) vertexValues[i] *= vertexValues[i]; isInside = isInside(vertexValues[i], cutoff, isCutoffAbsolute); + //System.out.println("marchingcubes " + vertexValues[i] + " " + isInside); } if (isInside) { bsVoxels.set(pti); Modified: trunk/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/jvxl/calc/MarchingSquares.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -86,22 +86,29 @@ } private boolean contourFromZero = true; + private float[] contoursDiscrete; public MarchingSquares(VertexDataServer surfaceReader, VolumeData volumeData, - Point4f thePlane, int nContours, int thisContour, boolean contourFromZero) { + Point4f thePlane, float[] contoursDiscrete, int nContours, int thisContour, boolean contourFromZero) { this.surfaceReader = surfaceReader; this.volumeData = volumeData; this.thePlane = thePlane; this.thisContour = thisContour; is3DContour = (thePlane == null); + this.contoursDiscrete = contoursDiscrete; nContoursSpecified = nContours; this.contourFromZero = contourFromZero; //set false for MEP to complete the plane - int i = (contourFromZero ? 1 : is3DContour ? 1 : 2); - nContourSegments = (nContours == 0 ? defaultContourCount + i - : nContours + i); - if (nContourSegments > nContourMax) - nContourSegments = nContourMax; - + if (contoursDiscrete == null) { + int i = (contourFromZero ? 1 : is3DContour ? 1 : 2); + nContourSegments = (nContours == 0 ? defaultContourCount + i + : nContours + i); + if (nContourSegments > nContourMax) + nContourSegments = nContourMax; + } else { + nContours = contoursDiscrete.length; + nContourSegments = nContours; + contourFromZero = true; + } setContourType(); } @@ -546,8 +553,8 @@ + " nContours=" + (nContourSegments-1) + " (" + nContoursSpecified + " specified) contourFromZero=" + contourFromZero); for (int i = 0; i < nContourSegments; i++) { contourIndex = i; - float cutoff = - (contourFromZero ? min + (i * 1f / nContourSegments) * diff : + float cutoff = (contoursDiscrete != null ? contoursDiscrete[i] : + contourFromZero ? min + (i * 1f / nContourSegments) * diff : i == 0 ? -Float.MAX_VALUE : i == nContourSegments - 1 ? Float.MAX_VALUE : min + ((i - 1) * 1f / (nContourSegments-1)) * diff); @@ -586,8 +593,10 @@ for (int i = squareCountY; --i >= 0;) isoPointIndexes2d[i][0] = isoPointIndexes2d[i][1] = isoPointIndexes2d[i][2] = isoPointIndexes2d[i][3] = -1; + //TODO: Should review if this is appropriate: if (Math.abs(contourCutoff) < 0.0001) contourCutoff = (contourCutoff < 0 ? -0.0001f : 0.0001f); + int insideCount = 0, contourCount = 0; for (int x = squareCountX; --x >= 0;) { for (int y = squareCountY; --y >= 0;) { Modified: trunk/Jmol/src/org/jmol/jvxl/readers/Parameters.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/readers/Parameters.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/jvxl/readers/Parameters.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -218,6 +218,8 @@ mappedDataMin = Float.MAX_VALUE; minSet = 0; nContours = 0; + contourIncrements = null; + contoursDiscrete = null; pocket = null; rangeDefined = false; resolution = Float.MAX_VALUE; @@ -713,7 +715,9 @@ float resolution; int downsampleFactor; int maxSet; - + public float[] contoursDiscrete; + Point3f contourIncrements; + void setMapRanges(SurfaceReader surfaceReader) { if (colorByPhase || colorBySign || (thePlane != null || isBicolorMap) && !isContoured) { mappedDataMin = -1; Modified: trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -642,13 +642,36 @@ if ("contour" == propertyName) { params.isContoured = true; - int n = ((Integer) value).intValue(); - if (n == 0) - params.nContours = MarchingSquares.defaultContourCount; - else if (n > 0) + int n; + if (value instanceof float[]) { + // discrete values + params.contoursDiscrete = (float[]) value; + params.nContours = params.contoursDiscrete.length; + } else if (value instanceof Point3f) { + Point3f pt = params.contourIncrements = (Point3f) value; + float from = pt.x; + float to = pt.y; + float step = pt.z; + if (step <= 0) + step = 1; + n = 0; + for (float p = from; p <= to + step/10; p += step, n++) { + } + params.contoursDiscrete = new float[n]; + float p = from; + for (int i = 0; i < n; i++, p+= step) { + params.contoursDiscrete[i] = p; + } params.nContours = n; - else - params.thisContour = -n; + } else { + n = ((Integer) value).intValue(); + if (n == 0) + params.nContours = MarchingSquares.defaultContourCount; + else if (n > 0) + params.nContours = n; + else + params.thisContour = -n; + } return true; } Modified: trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/jvxl/readers/SurfaceReader.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -424,7 +424,7 @@ if (params.thePlane != null || params.isContoured) { marchingSquares = new MarchingSquares(this, volumeData, params.thePlane, - params.nContours, params.thisContour, params.contourFromZero); + params.contoursDiscrete, params.nContours, params.thisContour, params.contourFromZero); contourType = marchingSquares.getContourType(); marchingSquares.setMinMax(params.valueMappedToRed, params.valueMappedToBlue); Modified: trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -3603,14 +3603,51 @@ return 0; } - private int floatParameterSet(int i, float[] fparams) throws ScriptException { - if (tokAt(i) == Token.leftbrace) + private float[] floatParameterSet(int i, int nMin, int nMax) + throws ScriptException { + if (tokAt(i) == Token.leftbrace || tokAt(i) == Token.leftsquare) i++; - for (int j = 0; j < fparams.length; j++) - fparams[j] = floatParameter(i++); - if (tokAt(i) == Token.rightbrace) + Vector v = new Vector(); + int tok = tokAt(i); + switch (tok) { + case Token.string: + break; + case Token.point3f: + Point3f pt = getPoint3f(i, false); + v.add(new Float(pt.x)); + v.add(new Float(pt.y)); + v.add(new Float(pt.z)); + break; + case Token.point4f: + Point4f pt4 = getPoint4f(i); + v.add(new Float(pt4.x)); + v.add(new Float(pt4.y)); + v.add(new Float(pt4.z)); + v.add(new Float(pt4.w)); + break; + default: + for (int j = 0; j < nMax; j++) { + tok = tokAt(i); + if (tok == Token.rightbrace || tok == Token.rightsquare) { + break; + } else if (tok == Token.comma) { + i++; + j--; + continue; + } + v.add(new Float(floatParameter(i++))); + } + } + if (tokAt(i) == Token.rightbrace || tokAt(i) == Token.rightsquare) i++; - return i; + iToken = i - 1; + int n = v.size(); + if (n < nMin || n > nMax) + error(ERROR_invalidArgument); + float[] fparams = new float[n]; + for (int j = 0; j < n; j++) + fparams[j] = ((Float) v.get(j)).floatValue(); + return fparams; } private String stringParameter(int index) throws ScriptException { @@ -6594,8 +6631,8 @@ if (tokAt(i) == Token.unitcell) { ++i; htParams.put("spaceGroupIndex", new Integer(iGroup)); - float[] fparams = new float[6]; - i = floatParameterSet(i, fparams); + float[] fparams = floatParameterSet(i, 6, 6); + i = iToken; sOptions += " unitcell {"; for (int j = 0; j < 6; j++) sOptions += (j == 0 ? "" : " ") + fparams[j]; @@ -12184,6 +12221,7 @@ boolean isWild = (idSeen && viewer.getShapeProperty(iShape, "ID") == null); String translucency = null; String colorScheme = null; + short[] discreteColixes = null; if (isPmesh) setShapeProperty(iShape, "fileType", "Pmesh"); for (int i = iToken; i < statementLength; ++i) { @@ -12278,8 +12316,19 @@ * the term COLOR is too general. */ colorRangeStage = 0; - if (getToken(i + 1).tok == Token.string) + if (getToken(i + 1).tok == Token.string) { colorScheme = parameterAsString(++i); + if (colorScheme.indexOf(" ") > 0) { + String[] colors = Parser.getTokens(colorScheme); + discreteColixes = new short[colors.length]; + for (int j = 0; j < colors.length; j++) { + discreteColixes[j] = Graphics3D.getColix(Graphics3D + .getArgbFromString(colors[j])); + if (discreteColixes[j] == 0) + error(ERROR_badRGBColor); + } + } + } if ((theTok = tokAt(i + 1)) == Token.translucent || tokAt(i + 1) == Token.opaque) { translucency = setColorOptions(i + 1, JmolConstants.SHAPE_ISOSURFACE, @@ -12356,8 +12405,8 @@ } catch (ScriptException e) { } try { - float[] fparams = new float[6]; - i = floatParameterSet(i, fparams); + float[] fparams = floatParameterSet(i, 6, 6); + i = iToken; propertyValue = fparams; propertyName = "ellipsoid"; break; @@ -12526,8 +12575,20 @@ } if (str.equalsIgnoreCase("CONTOUR")) { propertyName = "contour"; - propertyValue = new Integer( - tokAt(i + 1) == Token.integer ? intParameter(++i) : 0); + str = optParameterAsString(i + 1); + if (str.equalsIgnoreCase("DISCRETE")) { + propertyValue = floatParameterSet(i + 2, 2, Integer.MAX_VALUE); + i = iToken; + } else if (str.equalsIgnoreCase("INCREMENT")) { + Point3f pt = getPoint3f(i + 2, false); + if (pt.z <= 0) + error(ERROR_invalidArgument); // from to step + propertyValue = pt; + i = iToken; + } else { + propertyValue = new Integer( + tokAt(i + 1) == Token.integer ? intParameter(++i) : 0); + } break; } if (str.equalsIgnoreCase("CUTOFF")) { @@ -12707,8 +12768,7 @@ propertyName = "link"; break; } - if (str.equalsIgnoreCase("LOBE") - || str.equalsIgnoreCase("LP") + if (str.equalsIgnoreCase("LOBE") || str.equalsIgnoreCase("LP") || str.equalsIgnoreCase("RAD")) { // lobe {eccentricity} surfaceObjectSeen = true; @@ -12905,7 +12965,9 @@ } if (thisSetNumber > 0) setShapeProperty(iShape, "getSurfaceSets", new Integer(thisSetNumber - 1)); - if (colorScheme != null) + if (discreteColixes != null) { + setShapeProperty(iShape, "colorDiscrete", discreteColixes); + } else if (colorScheme != null) setShapeProperty(iShape, "setColorScheme", colorScheme); Object area = null; Object volume = null; @@ -12914,7 +12976,8 @@ if (area instanceof Float) viewer.setFloatProperty("isosurfaceArea", ((Float) area).floatValue()); else - viewer.setUserVariable("isosurfaceArea", ScriptVariable.getVariable(area)); + viewer.setUserVariable("isosurfaceArea", ScriptVariable + .getVariable(area)); } if (doCalcVolume) { volume = (doCalcVolume ? viewer.getShapeProperty(iShape, "volume") : null); @@ -12922,7 +12985,8 @@ viewer.setFloatProperty("isosurfaceVolume", ((Float) volume) .floatValue()); else - viewer.setUserVariable("isosurfaceVolume", ScriptVariable.getVariable(volume)); + viewer.setUserVariable("isosurfaceVolume", ScriptVariable + .getVariable(volume)); } if (surfaceObjectSeen && isIsosurface && !isSyntaxCheck) { setShapeProperty(iShape, "finalize", null); Modified: trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -182,6 +182,13 @@ ////isosurface-only (no calculation required; no calculation parameters to set) + if ("colorDiscrete" == propertyName) { + if (thisMesh == null) + return; + thisMesh.setDiscreteColixes(sg.getParams().contoursDiscrete, (short[])value); + return; + } + if ("navigate" == propertyName) { navigate(((Integer)value).intValue()); return; Modified: trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -147,6 +147,28 @@ private int lastColor; private short lastColix; + public void setDiscreteColixes(float[] contours, short[] colixes) { + if (vertices == null || vertexValues == null || contours == null || colixes == null) + return; + int n = Math.min(contours.length, colixes.length); + isColorSolid = true; + polygonColixes = new short[polygonCount]; + for (int i = 0; i < polygonCount; i++) { + int[] pi = polygonIndexes[i]; + float v = 0; + for (int j = 0; j < 3; j++) { + v += vertexValues[pi[j]]; + } + v /= 3; + for (int j = n; --j >= 0;) { + if (v > contours[j]) { + polygonColixes[i] = colixes[j]; + break; + } + } + } + } + void addTriangleCheck(int vertexA, int vertexB, int vertexC, int check, int color) { if (vertices == null Modified: trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceRenderer.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceRenderer.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -219,8 +219,9 @@ if (colorSolid) { if (colorArrayed && i < imesh.polygonColixes.length) { short c = imesh.polygonColixes[i]; - if (c != 0) - colix = c; + if (c == 0) + continue; + colix = c; } colixA = colixB = colixC = colix; } else { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-10-15 03:35:39 UTC (rev 11588) @@ -3,6 +3,12 @@ version=11.9.7_dev +# bug fix: zshade now working correctly + +# new feature: isosurface ... map CONTOUR DISCRETE [0.5, 1.0, 1.5, 2.0] +# new feature: isosurface ... map CONTOUR INCREMENT {0.0, 1.0, 0.2} + +# code: StatusListener refactored as individual class # bug fix: Gaussian 09 LOG file reader upgrade for MOs # bug fix: unitcell offset {1 1 1}; select UNITCELL Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/DisplayPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/DisplayPanel.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/DisplayPanel.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -44,15 +44,16 @@ private String displaySpeed; private Dimension startupDimension; - private boolean haveDisplay; + boolean haveDisplay; Point border; boolean haveBorder; private JFrame frame; + MeasurementTable measurementTable; JFrame getFrame() { return frame; } - public DisplayPanel(JmolPanel jmol) { + DisplayPanel(JmolPanel jmol) { frame = jmol.frame; status = jmol.status; guimap = jmol.guimap; @@ -69,8 +70,10 @@ setDoubleBuffered(false); } - public void setViewer(JmolViewer viewer) { + void setViewer(JmolViewer viewer) { this.viewer = viewer; + if (haveDisplay) + measurementTable = new MeasurementTable(viewer, frame); viewer.setScreenDimension(haveDisplay? getSize(dimSize) : startupDimension); } Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java 2009-10-13 12:59:47 UTC (rev 11587) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -39,8 +39,6 @@ import java.awt.print.*; import java.beans.*; import java.io.*; -import java.lang.reflect.Method; -import java.net.URI; import java.util.*; import javax.swing.*; @@ -143,18 +141,16 @@ /* * this version of Jmol needs to have a display so that it can * construct JPG images -- if that is not needed, then you can - * use JmolFrameless.jar + * use JmolData.jar * */ display = new DisplayPanel(this); + StatusListener myStatusListener = new StatusListener(this, display); viewer = JmolViewer.allocateViewer(display, modelAdapter, null, null, null, - appletContext = commandOptions, new MyStatusListener()); -// if (jmolApp.haveDisplay) - display.setViewer(viewer); - // else - // viewer.setScreenDimension(new Dimension(jmolApp.startupWidth, - // jmolApp.startupHeight)); - + appletContext = commandOptions, myStatusListener); + display.setViewer(viewer); + myStatusListener.setViewer(viewer); + if (!jmolApp.haveDisplay) return; say(GT._("Initializing Preferences...")); @@ -163,7 +159,6 @@ recentFiles = new RecentFilesDialog(frame); say(GT._("Initializing Script Window...")); viewer.getProperty("DATA_API", "getAppConsole", Boolean.TRUE); - measurementTable = new MeasurementTable(viewer, frame); // Setup Plugin system @@ -1264,7 +1259,11 @@ } WebExport webExport; + void createWebExport() { + webExport = WebExport.createAndShowGUI(viewer, historyFile, WEB_MAKER_WINDOW_NAME); + } + class ToWebAction extends AbstractAction { public ToWebAction() { @@ -1274,8 +1273,7 @@ public void actionPerformed(ActionEvent e) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { - webExport = WebExport.createAndShowGUI(viewer, historyFile, - WEB_MAKER_WINDOW_NAME); + createWebExport(); } }); } @@ -1308,274 +1306,16 @@ viewer, fileName, historyFile, FILE_OPEN_WINDOW_NAME, (fileName == null)); } - public static final String chemFileProperty = "chemFile"; + static final String chemFileProperty = "chemFile"; - class MyStatusListener implements JmolStatusListener { - - /* starting with Jmol 11.7.27, JmolStatusListener extends JmolCallbackListener - * - * providing a simpler interface if all that is wanted is callback functionality. - * - * Only three methods are involved: - * - * boolean notifyEnabled(int type) - * -- lets the statusManager know if there is an implementation - * of a given callback type - * - * void notifyCallback(int type, Object[] data) - * -- callback action; data varies with callback type - * -- see org.jmol.viewer.StatusManager for details - * - * void setCallbackFunction(String callbackType, String callbackFunction) - * -- called by statusManager in response to the - * "set callback" script command - * -- also used by the Jmol application to change menus and languages - * -- can remain unimplemented if no such user action is intended - * - */ - - /// JmolCallbackListener interface /// - - public boolean notifyEnabled(int type) { - switch (type) { - case JmolConstants.CALLBACK_ANIMFRAME: - case JmolConstants.CALLBACK_ECHO: - case JmolConstants.CALLBACK_LOADSTRUCT: - case JmolConstants.CALLBACK_MEASURE: - case JmolConstants.CALLBACK_MESSAGE: - case JmolConstants.CALLBACK_CLICK: - case JmolConstants.CALLBACK_PICK: - case JmolConstants.CALLBACK_SCRIPT: - return true; - case JmolConstants.CALLBACK_ERROR: - case JmolConstants.CALLBACK_HOVER: - case JmolConstants.CALLBACK_MINIMIZATION: - case JmolConstants.CALLBACK_RESIZE: - case JmolConstants.CALLBACK_SYNC: - //applet only (but you could change this for your listener) - } - return false; + void notifyFileOpen(String fullPathName, String title) { + recentFiles.notifyFileOpen(fullPathName); + frame.setTitle(title); + if (atomSetChooser == null) { + atomSetChooser = new AtomSetChooser(viewer, frame); + pcs.addPropertyChangeListener(chemFileProperty, atomSetChooser); } - - public void notifyCallback(int type, Object[] data) { - String strInfo = (data == null || data[1] == null ? null : data[1] - .toString()); - switch (type) { - case JmolConstants.CALLBACK_LOADSTRUCT: - notifyFileLoaded(strInfo, (String) data[2], (String) data[3], - (String) data[4]); - break; - case JmolConstants.CALLBACK_ANIMFRAME: - int[] iData = (int[]) data[1]; - notifyFrameChanged(iData[0], iData[1], iData[2]); - break; - case JmolConstants.CALLBACK_SCRIPT: - int msWalltime = ((Integer) data[3]).intValue(); - if (msWalltime == 0) { - if (data[2] != null && display != null) - display.status.setStatus(1, (String) data[2]); - } - break; - case JmolConstants.CALLBACK_ECHO: - sendConsoleEcho(strInfo); - break; - case JmolConstants.CALLBACK_MEASURE: - String mystatus = (String) data[3]; - if (mystatus.indexOf("Picked") >= 0) //picking mode - notifyAtomPicked(strInfo); - else if (mystatus.indexOf("Completed") >= 0) - sendConsoleEcho(strInfo.substring(strInfo.lastIndexOf(",") + 2, - strInfo.length() - 1)); - if (mystatus.indexOf("Pending") < 0) { - //System.out.println("jmol callback measure" + status); - measurementTable.updateTables(); - } - break; - case JmolConstants.CALLBACK_MESSAGE: - sendConsoleMessage(data == null ? null : strInfo); - break; - case JmolConstants.CALLBACK_CLICK: - //x, y, modifiers, int[] {modifiers} - // the fourth parameter allows an application to change the modifier - status.setStatus(1, "(" + data[1] + "," + data[2] + ") [" + data[3] + "]"); - break; - case JmolConstants.CALLBACK_PICK: - notifyAtomPicked(strInfo); - break; - case JmolConstants.CALLBACK_ERROR: - case JmolConstants.CALLBACK_HOVER: - case JmolConstants.CALLBACK_MINIMIZATION: - case JmolConstants.CALLBACK_RESIZE: - case JmolConstants.CALLBACK_SYNC: - //applet only (but you could change this for your listener) - break; - } - } - - public void setCallbackFunction(String callbackType, String callbackFunction) { - if (callbackType.equalsIgnoreCase("menu")) { - setupNewFrame(viewer.getStateInfo()); - return; - } - if (callbackType.equalsIgnoreCase("language")) { - Dialog.setupUIManager(); - if (webExport != null) { - WebExport.saveHistory(); - WebExport.dispose(); - webExport = WebExport.createAndShowGUI(viewer, historyFile, - WEB_MAKER_WINDOW_NAME); - } - setupNewFrame(viewer.getStateInfo()); - return; - } - } - - /// end of JmolCallbackListener interface /// - - public String eval(String strEval) { - sendConsoleMessage("javascript: " + strEval); - return "# 'eval' is implemented only for the applet."; - } - - /** - * - * @param fileName - * @param type - * @param text_or_bytes - * @param quality - * @return null ("you do it" or canceled) or a message starting with OK or an error message - */ - public String createImage(String fileName, String type, Object text_or_bytes, - int quality) { - return null; - } - - private void notifyAtomPicked(String info) { - JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer.getProperty("DATA_API", "getAppConsole", null); - if (appConsole != null) { - appConsole.sendConsoleMessage(info); - appConsole.sendConsoleMessage("\n"); - } - status.setStatus(1, info); - } - - private void notifyFileLoaded(String fullPathName, String fileName, - String modelName, String errorMsg) { - if (errorMsg != null) { - return; - } - if (!jmolApp.haveDisplay) - return; - - // this code presumes only ptLoad = -1 (error), 0 (zap), or 3 (completed) - - // jmolpopup.updateComputedMenus(); - String title = "Jmol"; - if (modelName != null && fileName != null) - title = fileName + " - " + modelName; - else if (fileName != null) - title = fileName; - else if (modelName != null) - title = modelName; - recentFiles.notifyFileOpen(fullPathName); - frame.setTitle(title); - if (atomSetChooser == null) { - atomSetChooser = new AtomSetChooser(viewer, frame); - pcs.addPropertyChangeListener(chemFileProperty, atomSetChooser); - } - pcs.firePropertyChange(chemFileProperty, null, null); - } - - private void notifyFrameChanged(int frameNo, int file, int model) { - if (display != null) - display.status.setStatus(1, file + "." + model); - } - - private void sendConsoleEcho(String strEcho) { - JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer.getProperty("DATA_API", "getAppConsole", null); - if (appConsole != null) - appConsole.sendConsoleEcho(strEcho); - } - - private void sendConsoleMessage(String strStatus) { - JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer.getProperty("DATA_API", "getAppConsole", null); - if (appConsole != null) - appConsole.sendConsoleMessage(strStatus); - } - - public void showUrl(String url) { - try { - Class c = Class.forName("java.awt.Desktop"); - Method getDesktop = c.getMethod("getDesktop", new Class[] {}); - Object deskTop = getDesktop.invoke(null, new Class[] {}); - Method browse = c.getMethod("browse", new Class[] { URI.class }); - Object arguments[] = { new URI(url) }; - browse.invoke(deskTop, arguments); - } catch (Exception e) { - System.out.println(e.getMessage()); - JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer.getProperty("DATA_API", "getAppConsole", null); - if (appConsole != null) { - appConsole - .sendConsoleMessage("Java 6 Desktop.browse() capability unavailable. Could not open " - + url); - } else { - Logger - .error("Java 6 Desktop.browse() capability unavailable. Could not open " - + url); - } - } - } - - /** - * this is just a test method for isosurface FUNCTIONXY - * @param functionName - * @param nX - * @param nY - * @return f(x,y) as a 2D array - * - */ - public float[][] functionXY(String functionName, int nX, int nY) { - nX = Math.abs(nX); - nY = Math.abs(nY); - float[][] f = new float[nX][nY]; - //boolean isSecond = (functionName.indexOf("2") >= 0); - for (int i = nX; --i >= 0;) - for (int j = nY; --j >= 0;) { - float x = i / 15f - 1; - float y = j / 15f - 1; - f[i][j] = (float) Math.sqrt(x*x + y); - if (Float.isNaN(f[i][j])) - f[i][j] = -(float) Math.sqrt(-x*x - y); - // f[i][j] = (isSecond ? (float) ((i + j - nX) / (2f)) : (float) Math - // .sqrt(Math.abs(i * i + j * j)) / 2f); - //if (i < 10 && j < 10) - System.out.println(" functionXY " + i + " " + j + " " + f[i][j]); - } - - return f; // for user-defined isosurface functions (testing only -- bob hanson) - } - - public float[][][] functionXYZ(String functionName, int nX, int nY, int nZ) { - nX = Math.abs(nX); - nY = Math.abs(nY); - nZ = Math.abs(nZ); - float[][][] f = new float[nX][nY][nZ]; - for (int i = nX; --i >= 0;) - for (int j = nY; --j >= 0;) - for (int k = nZ; --k >= 0;) { - float x = i / ((nX-1)/2f) - 1; - float y = j / ((nY-1)/2f) - 1; - float z = k / ((nZ-1)/2f) - 1; - f[i][j][k] = (float) x*x + y - z*z; - //if (i == 22 || i == 23) - //System.out.println(" functionXYZ " + i + " " + j + " " + k + " " + f[i][j][k]); - } - return f; // for user-defined isosurface functions (testing only -- bob hanson) - } - - public Hashtable getRegistryInfo() { - return null; - } + pcs.firePropertyChange(chemFileProperty, null, null); } class ExecuteScriptAction extends AbstractAction { @@ -1591,5 +1331,4 @@ viewer.evalStringQuiet(script); } } - } Added: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java (rev 0) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java 2009-10-15 03:35:39 UTC (rev 11588) @@ -0,0 +1,316 @@ +/* $RCSfile$ + * $Author: hansonr $ + * $Date: 2009-06-26 23:35:44 -0500 (Fri, 26 Jun 2009) $ + * $Revision: 11131 $ + * + * Copyright (C) 2000-2005 The Jmol Development Team + * + * Contact: jmo...@li... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.openscience.jmol.app.jmolpanel; + +import org.jmol.api.*; +import org.jmol.export.dialog.Dialog; +import org.jmol.util.*; +import org.jmol.viewer.JmolConstants; +import org.openscience.jmol.app.webexport.WebExport; + +import java.lang.reflect.Method; +import java.net.URI; +import java.util.*; + +class StatusListener implements JmolStatusListener { + + /* + * starting with Jmol 11.7.27, JmolStatusListener extends JmolCallbackListener + * + * providing a simpler interface if all that is wanted is callback + * functionality. + * + * Only three methods are involved: + * + * boolean notifyEnabled(int type) -- lets the statusManager know if there is + * an implementation of a given callback type + * + * void notifyCallback(int type, Object[] data) -- callback action; data + * varies with callback type -- see org.jmol.viewer.StatusManager for details + * + * void setCallbackFunction(String callbackType, String callbackFunction) -- + * called by statusManager in response to the "set callback" script command -- + * also used by the Jmol application to change menus and languages -- can + * remain unimplemented if no such user action is intended + */ + + JmolPanel jmol; + DisplayPanel display; + + JmolViewer viewer; + void setViewer(JmolViewer viewer) { + this.viewer = viewer; + } + + StatusListener(JmolPanel jmol, DisplayPanel display) { + // just required for Jmol application's particular callbacks + this.jmol = jmol; + this.display = display; + } + + // / JmolCallbackListener interface /// + public boolean notifyEnabled(int type) { + switch (type) { + case JmolConstants.CALLBACK_ANIMFRAME: + case JmolConstants.CALLBACK_ECHO: + case JmolConstants.CALLBACK_LOADSTRUCT: + case JmolConstants.CALLBACK_MEASURE: + case JmolConstants.CALLBACK_MESSAGE: + case JmolConstants.CALLBACK_CLICK: + case JmolConstants.CALLBACK_PICK: + case JmolConstants.CALLBACK_SCRIPT: + return true; + case JmolConstants.CALLBACK_ERROR: + case JmolConstants.CALLBACK_HOVER: + case JmolConstants.CALLBACK_MINIMIZATION: + case JmolConstants.CALLBACK_RESIZE: + case JmolConstants.CALLBACK_SYNC: + // applet only (but you could change this for your listener) + } + return false; + } + + public void notifyCallback(int type, Object[] data) { + String strInfo = (data == null || data[1] == null ? null : data[1] + .toString()); + switch (type) { + case JmolConstants.CALLBACK_LOADSTRUCT: + notifyFileLoaded(strInfo, (String) data[2], (String) data[3], + (String) data[4]); + break; + case JmolConstants.CALLBACK_ANIMFRAME: + int[] iData = (int[]) data[1]; + int file = iData[1]; + int model = iData[2]; + if (display.haveDisplay) + display.status.setStatus(1, file + "." + model); + break; + case JmolConstants.CALLBACK_SCRIPT: + int msWalltime = ((Integer) data[3]).intValue(); + if (msWalltime == 0) { + if (data[2] != null && display.haveDisplay) + display.status.setStatus(1, (String) data[2]); + } + break; + case JmolConstants.CALLBACK_ECHO: + sendConsoleEcho(strInfo); + break; + case JmolConstants.CALLBACK_MEASURE: + String mystatus = (String) data[3]; + if (mystatus.indexOf("Picked") >= 0) // picking mode + notifyAtomPicked(strInfo); + else if (mystatus.indexOf("Completed") >= 0) + sendConsoleEcho(strInfo.substring(strInfo.lastIndexOf(",") + 2, strInfo + .length() - 1)); + if (mystatus.indexOf("Pending") < 0) { + // System.out.println("jmol callback measure" + status); + if (display.haveDisplay) + display.measurementTable.updateTables(); + } + break; + case JmolConstants.CALLBACK_MESSAGE: + sendConsoleMessage(data == null ? null : strInfo); + break; + case JmolConstants.CALLBACK_CLICK: + // x, y, modifiers, int[] {modifiers} + // the fourth parameter allows an application to change the modifier + if (display.haveDisplay) + display.status + .setStatus(1, "(" + data[1] + "," + data[2] + ") [" + data[3] + "]"); + break; + case JmolConstants.CALLBACK_PICK: + notifyAtomPicked(strInfo); + break; + case JmolConstants.CALLBACK_ERROR: + case JmolConstants.CALLBACK_HOVER: + case JmolConstants.CALLBACK_MINIMIZATION: + case JmolConstants.CALLBACK_RESIZE: + case JmolConstants.CALLBACK_SYNC: + // applet only (but you could change this for your listener) + break; + } + } + + public void setCallbackFunction(String callbackType, String callbackFunction) { + if (callbackType.equalsIgnoreCase("menu")) { + jmol.setupNewFrame(viewer.getStateInfo()); + return; + } + if (callbackType.equalsIgnoreCase("language")) { + Dialog.setupUIManager(); + if (jmol.webExport != null) { + WebExport.saveHistory(); + WebExport.dispose(); + jmol.createWebExport(); + } + jmol.setupNewFrame(viewer.getStateInfo()); + return; + } + } + + // / end of JmolCallbackListener interface /// + + public String eval(String strEval) { + sendConsoleMessage("javascript: " + strEval); + return "# 'eval' is implemented only for the applet."; + } + + /** + * + * @param fileName + * @param type + * @param text_or_bytes + * @param quality + * @return null ("you do it" or canceled) or a message starting with OK or an + * error message + */ + public String createImage(String fileName, String type, Object text_or_bytes, + int quality) { + return null; + } + + private void notifyAtomPicked(String info) { + JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer + .getProperty("DATA_API", "getAppConsole", null); + if (appConsole != null) { + appConsole.sendConsoleMessage(info); + appConsole.sendConsoleMessage("\n"); + } + if (display.haveDisplay) + display.status.setStatus(1, info); + } + + private void notifyFileLoaded(String fullPathName, String fileName, + String modelName, String errorMsg) { + if (errorMsg != null) { + return; + } + if (!display.haveDisplay) + return; + + // this code presumes only ptLoad = -1 (error), 0 (zap), or 3 (completed) + String title = "Jmol"; + if (modelName != null && fileName != null) + title = fileName + " - " + modelName; + else if (fileName != null) + title = fileName; + else if (modelName != null) + title = modelName; + jmol.notifyFileOpen(fullPathName, title); + } + + private void sendConsoleEcho(String strEcho) { + JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer + .getProperty("DATA_API", "getAppConsole", null); + if (appConsole != null) + appConsole.sendConsoleEcho(strEcho); + } + + private void sendConsoleMessage(String strStatus) { + JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer + .getProperty("DATA_API", "getAppConsole", null); + if (appConsole != null) + appConsole.sendConsoleMessage(strStatus); + } + + public void showUrl(String url) { + try { + Class c = Class.forName("java.awt.Desktop"); + Method getDesktop = c.getMethod("getDesktop", new Class[] {}); + Object deskTop = getDesktop.invoke(null, new Class[] {}); + Method browse = c.getMethod("browse", new Class[] { URI.class }); + Object arguments[] = { new URI(url) }; + browse.invoke(deskTop, arguments); + } catch (Exception e) { + System.out.println(e.getMessage()); + JmolAppConsoleInterface appConsole = (JmolAppConsoleInterface) viewer + .getProperty("DATA_API", "getAppConsole", null); + if (appConsole != null) { + appConsole + .sendConsoleMessage("Java 6 Desktop.browse() capability unavailable. Could not open " + + url); + } else { + Logger + .error("Java 6 Desktop.browse() capability unavailable. Could not open " + + url); + } + } + } + + /** + * this is just a test method for isosurface FUNCTIONXY + * + * @param functionName + * @param nX + * @param nY + * @return f(x,y) as a 2D array + * + */ + public float[][] functionXY(String functionName, int nX, int nY) { + nX = Math.abs(nX); + nY = Math.abs(nY); + float[][] f = new float[nX][nY]; + // boolean isSecond = (functionName.indexOf("2") >= 0); + for (int i = nX; --i >= 0;) + for (int j = nY; --j >= 0;) { + float x = i / 5f; // / 15f - 1; + float y = j / 5f; // / 15f - 1; + f[i][j] = (float) /* Math.sqrt */(x * x + y); + if (Float.isNaN(f[i][j])) + f[i][j] = -(float) Math.sqrt(-x * x - y); + // f[i][j] = (isSecond ? (float) ((i + j - nX) / (2f)) : (float) Math + // .sqrt(Math.abs(i * i + j * j)) / 2f); + // if (i < 10 && j < 10) + System.out.println(" functionXY " + i + " " + j + " " + f[i][j]); + } + + return f; // for user-defined isosurface functions (testing only -- bob + // hanson) + } + + public float[][][] functionXYZ(String functionName, int nX, int nY, int nZ) { + nX = Math.abs(nX); + nY = Math.abs(nY); + nZ = Math.abs(nZ); + float[][][] f = new float[nX][nY][nZ]; + for (int i = nX; --i >= 0;) + for (int j = nY; --j >= 0;) + for (int k = nZ; --k >= 0;) { + float x = i / ((nX - 1) / 2f) - 1; + float y = j / ((nY - 1) / 2f) - 1; + float z = k / ((nZ - 1) / 2f) - 1; + f[i][j][k] = (float) x * x + y - z * z; + // if (i == 22 || i == 23) + // System.out.println(" functionXYZ " + i + " " + j + " " + k + " " + + // f[i][j][k]); + } + return f; // for user-defined isosurface functions (testing only -- bob + // hanson) + } + + public Hashtable getRegistryInfo() { + return null; + } + +} Property changes on: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |