From: <ni...@us...> - 2008-07-30 22:27:29
|
Revision: 9662 http://jmol.svn.sourceforge.net/jmol/?rev=9662&view=rev Author: nicove Date: 2008-07-30 22:27:24 +0000 (Wed, 30 Jul 2008) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/build.xml Added Paths: ----------- trunk/Jmol/doc/docbook-xsl-1.74.0.tar.gz Removed Paths: ------------- trunk/Jmol/doc/docbook-xsl-1.73.2.tar.gz Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2008-07-30 22:09:54 UTC (rev 9661) +++ trunk/Jmol/build.xml 2008-07-30 22:27:24 UTC (rev 9662) @@ -34,7 +34,7 @@ <property name="javadoc.dir" value="build/javadoc" /> <property name="jmol.applet.build.dir" value="build" /> <property name="jmol.build.dir" value="build" /> - <property name="docbook-xsl" value="docbook-xsl-1.73.2" /> + <property name="docbook-xsl" value="docbook-xsl-1.74.0" /> <property name="docbook-xml" value="docbook-xml-4.4" /> <property name="vecmath.jar" value="vecmath1.2-1.14.jar" /> <property name="itext.jar" value="itext-1.4.5.jar" /> Property changes on: trunk/Jmol/doc/docbook-xsl-1.74.0.tar.gz ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-12 23:17:10
|
Revision: 9716 http://jmol.svn.sourceforge.net/jmol/?rev=9716&view=rev Author: hansonr Date: 2008-08-12 23:17:06 +0000 (Tue, 12 Aug 2008) Log Message: ----------- version=11.6.RC6_dev # bug fix: language localization in webexport Modified Paths: -------------- trunk/Jmol/build.xml trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/HelpDialog.java 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/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 Property Changed: ---------------- trunk/Jmol/ Property changes on: trunk/Jmol ___________________________________________________________________ Modified: svn:ignore - applet-classes classes build bin dist javadoc Jmol*.zip packaging/rpm/dist *.bak *.deprecated *~ *.jar t.spt data + applet-classes classes build bin dist javadoc Jmol*.zip packaging/rpm/dist *.bak *.deprecated *~ *.jar t.spt data bobtest vrml scripts Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2008-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/build.xml 2008-08-12 23:17:06 UTC (rev 9716) @@ -13,7 +13,7 @@ <!-- for some reason, I can't get ant to use this ${java.version} property as the value of the source parameter --> <property name="java.version" value="1.4" /> - <property name="debug" value="off" /> + <property name="debug" value="on" /> <property name="deprecation" value="off" /> <property name="optimization" value="off" /> Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-12 23:17:06 UTC (rev 9716) @@ -3,6 +3,7 @@ version=11.6.RC6_dev +# bug fix: language localization in webexport # ----------------------------------------------------------------------------- #version=11.6.RC5 Modified: trunk/Jmol/src/org/openscience/jmol/app/HelpDialog.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/HelpDialog.java 2008-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/src/org/openscience/jmol/app/HelpDialog.java 2008-08-12 23:17:06 UTC (rev 9716) @@ -64,20 +64,16 @@ super(fr, GT._("Jmol Help"), false); try { - URL helpURL = url; - if (url == null) { - helpURL = this.getClass().getClassLoader() + URL helpURL = (url != null ? url : this.getClass().getClassLoader() .getResource(JmolResourceHandler - .getStringX("Help.helpURL")); - } - if (helpURL != null) { + .getStringX("Help.helpURL"))); + if (helpURL != null) html = new JEditorPane(helpURL); - } else { + else html = new JEditorPane("text/plain", GT._("Unable to find url \"{0}\".", JmolResourceHandler.getStringX("Help.helpURL") )); - } html.setEditable(false); html.addHyperlinkListener(this); } catch (MalformedURLException e) { Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-08-12 23:17:06 UTC (rev 9716) @@ -1356,8 +1356,7 @@ } public void actionPerformed(ActionEvent e) { - HelpDialog hd = new HelpDialog(frame); - hd.show(); + (new HelpDialog(frame)).show(); } } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java 2008-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/JmolInstance.java 2008-08-12 23:17:06 UTC (rev 9716) @@ -119,17 +119,10 @@ 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(GT._("Failed to delete scratch file ") - + this.pictFile + ".")); - throw IOe; - } - //delete any other scratch files we create with an instance. - } + File scratchToErase = new File(pictFile); + if (scratchToErase.exists() && !scratchToErase.delete()) + throw new IOException(GT._("Failed to delete scratch file {0}.", pictFile)); + //delete any other scratch files we create with an instance. return true; } } Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java 2008-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/PopInJmol.java 2008-08-12 23:17:06 UTC (rev 9716) @@ -35,12 +35,9 @@ PopInJmol(JmolViewer viewer, JFileChooser fc, WebPanel[] webPanels, 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"; + panelName = "pop_in"; 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"; + //description = "Create a web page with images that convert to live Jmol applets when a user clicks a link"; } JPanel appletParamPanel() { Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java 2008-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/ScriptButtons.java 2008-08-12 23:17:06 UTC (rev 9716) @@ -35,12 +35,9 @@ ScriptButtons(JmolViewer viewer, JFileChooser fc, WebPanel[] webPanels, 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"; + panelName = "script_button"; 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"; + //description = "Create a web page containing a text and button pane that scrolls next to a resizable Jmol applet"; } JPanel appletParamPanel() { Modified: trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebExport.java 2008-08-12 23:17:06 UTC (rev 9716) @@ -70,16 +70,15 @@ private static JFrame webFrame; private static String windowName; - private WebExport(JmolViewer viewer, HistoryFile hFile) { super(new BorderLayout()); historyFile = hFile; remoteAppletPath = historyFile.getProperty("webMakerAppletPath", ".."); localAppletPath = historyFile.getProperty("webMakerLocalAppletPath", ".."); - pageAuthorName = historyFile.getProperty("webMakerPageAuthorName", "Jmol Web Export"); + pageAuthorName = historyFile.getProperty("webMakerPageAuthorName", + "Jmol Web Export"); - //Define the tabbed pane JTabbedPane mainTabs = new JTabbedPane(); @@ -92,7 +91,7 @@ //Add tabs to the tabbed pane JPanel introPanel = new JPanel(); - URL url = getResource(this, GT._("WebExportIntro.html")); + URL url = getHtmlResource(this, "WebExportIntro"); if (url == null) { System.err.println(GT._("Couldn't find file: WebExportIntro.html")); } @@ -106,14 +105,14 @@ } intro.setEditable(false); JScrollPane introPane = new JScrollPane(intro); - introPane.setMaximumSize(new Dimension(450,350)); - introPane.setPreferredSize(new Dimension(400,300)); + introPane.setMaximumSize(new Dimension(450, 350)); + introPane.setPreferredSize(new Dimension(400, 300)); introPanel.setLayout(new BorderLayout()); introPanel.add(introPane); - introPanel.setMaximumSize(new Dimension(450,350)); - introPanel.setPreferredSize(new Dimension(400,300)); + introPanel.setMaximumSize(new Dimension(450, 350)); + introPanel.setPreferredSize(new Dimension(400, 300)); - mainTabs.add(GT._("Introduction"),introPanel); + mainTabs.add(GT._("Introduction"), introPanel); webPanels[0] = new PopInJmol(viewer, fc, webPanels, 0); webPanels[1] = new ScriptButtons(viewer, fc, webPanels, 1); @@ -145,15 +144,13 @@ //Add the tabbed pane to this panel add(mainTabs); - + //Create the small log add(LogPanel.getMiniPanel(), BorderLayout.SOUTH); - //Uncomment the following line to use scrolling tabs. //tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); - } @@ -173,9 +170,9 @@ * this method should be invoked from the * event-dispatching thread. */ - + public static WebExport createAndShowGUI(JmolViewer viewer, - HistoryFile historyFile, String wName) { + HistoryFile historyFile, String wName) { if (viewer == null) runStatus = STAND_ALONE; @@ -204,7 +201,6 @@ webFrame.setContentPane(webExport); webFrame.addWindowListener(webExport); - //Display the window. webFrame.pack(); webFrame.setVisible(true); @@ -219,12 +215,12 @@ public static void saveHistory() { historyFile.addWindowInfo(windowName, webFrame, null); -// prop.setProperty("webMakerInfoWidth", "" + webPanels[0].getInfoWidth()); -// prop.setProperty("webMakerInfoHeight", "" + webPanels[0].getInfoHeight()); + // prop.setProperty("webMakerInfoWidth", "" + webPanels[0].getInfoWidth()); + // prop.setProperty("webMakerInfoHeight", "" + webPanels[0].getInfoHeight()); prop.setProperty("webMakerAppletPath", remoteAppletPath); prop.setProperty("webMakerLocalAppletPath", localAppletPath); prop.setProperty("webMakerPageAuthorName", pageAuthorName); - historyFile.addProperties(prop); + historyFile.addProperties(prop); } static String remoteAppletPath, localAppletPath; @@ -245,16 +241,16 @@ } else { localAppletPath = path; prop.setProperty("webMakerLocalAppletPath", localAppletPath); - historyFile.addProperties(prop); + historyFile.addProperties(prop); } } - + static String pageAuthorName; - + static String getPageAuthorName() { return pageAuthorName; } - + static void setWebPageAuthor(String pageAuthor) { if (pageAuthor == null) pageAuthor = "Jmol Web Export"; @@ -262,15 +258,34 @@ prop.setProperty("webMakerPageAuthorName", pageAuthorName); historyFile.addProperties(prop); } - - static JFrame getFrame(){ + + static JFrame getFrame() { return webFrame; } - - static URL getResource(Object object, String fileName) { + + static URL getResource(Object object, String fileName) { + return getResource(object, fileName, true); + } + + static URL getHtmlResource(Object object, String root) { + String lang = GT.getLanguage(); + String fileName = root + "_" + lang + ".html"; + URL url = getResource(object, fileName, false); + if (url == null) { + fileName = root + "_" + lang.substring(0, 2) + ".html"; + url = getResource(object, fileName, false); + if (url == null) { + fileName = root + ".html"; + url = getResource(object, fileName, true); + } + } + return url; + } + + static URL getResource(Object object, String fileName, boolean flagError) { URL url = null; try { - if ((url = object.getClass().getResource("html/" + fileName)) == null) + if ((url = object.getClass().getResource("html/" + fileName)) == null && flagError) System.err.println("Couldn't find file: " + fileName); } catch (Exception e) { System.err.println("Exception " + e.getMessage() + " in getResource " @@ -279,7 +294,8 @@ return url; } - static String getResourceString(Object object, String name) throws IOException { + static String getResourceString(Object object, String name) + throws IOException { URL url = WebExport.getResource(object, name); if (url == null) { throw new FileNotFoundException("Error loading resource " + name); @@ -304,40 +320,40 @@ // + str.length() + " bytes)"); return str; } - + /* Window event code for cleanup*/ public void windowClosing(WindowEvent e) { -} + } -public void windowClosed(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 windowOpened(WindowEvent e) { + } -public void windowIconified(WindowEvent e) { -} + public void windowIconified(WindowEvent e) { + } -public void windowDeiconified(WindowEvent e) { -} + public void windowDeiconified(WindowEvent e) { + } -public void windowActivated(WindowEvent e) { -} + public void windowActivated(WindowEvent e) { + } -public void windowDeactivated(WindowEvent e) { -} + public void windowDeactivated(WindowEvent e) { + } -public void windowGainedFocus(WindowEvent e) { -} + public void windowGainedFocus(WindowEvent e) { + } -public void windowLostFocus(WindowEvent e) { -} + public void windowLostFocus(WindowEvent e) { + } -public void windowStateChanged(WindowEvent e) { -} + public void windowStateChanged(WindowEvent e) { + } -public static void cleanUp(){ + public static void cleanUp() { //gets rid of scratch files. FileSystemView Directories = FileSystemView.getFileSystemView(); File homedir = Directories.getHomeDirectory(); @@ -347,11 +363,11 @@ if (scratchdir.exists()) { File[] dirListing = null; dirListing = scratchdir.listFiles(); - for (int i = 0; i < (dirListing.length);i++){ + 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-08-12 22:45:24 UTC (rev 9715) +++ trunk/Jmol/src/org/openscience/jmol/app/webexport/WebPanel.java 2008-08-12 23:17:06 UTC (rev 9716) @@ -59,13 +59,21 @@ abstract JPanel appletParamPanel(); //should be defined in the code for the specific case e.g. ScriptButtons.java - protected String templateName; + protected String panelName; //pop_in or script_button + +// infoFile = "pop_in_instructions"; +// infoFileLocalized = "pop_in_instructions_" + lang + ".html"; +// templateName = "pop_in_template.html"; +// appletTemplateName = "pop_in_template2.html"; + + //protected String templateName; + //protected String infoFile; + //protected String appletTemplateName; + //protected String templateImage; + + protected String htmlAppletTemplate; protected String listLabel; - protected String infoFile; protected String appletInfoDivs; - protected String htmlAppletTemplate; - protected String appletTemplateName; - protected String templateImage; protected boolean useAppletJS; protected JSpinner appletSizeSpinnerW; @@ -188,52 +196,54 @@ helpButton = new JButton(GT._("Help/Instructions")); helpButton.addActionListener(this); - + + String templateImage = panelName + ".png"; URL pageCartoon = WebExport.getResource(this, templateImage); ImageIcon pageImage = null; - if (pageCartoon != null){ + if (pageCartoon != null) { pageImage = new ImageIcon(pageCartoon, GT._("Cartoon of Page")); } else { - System.err.println("Error Loading Page Cartoon Image "+templateImage); + System.err.println("Error Loading Page Cartoon Image " + templateImage); } JLabel pageCartoonLabel = new JLabel(pageImage); - JPanel pageCartoonPanel = new JPanel(); + JPanel pageCartoonPanel = new JPanel(); pageCartoonPanel.setLayout(new BorderLayout()); - pageCartoonPanel.setBorder(BorderFactory.createTitledBorder(GT._("Cartoon of Page:"))); + pageCartoonPanel.setBorder(BorderFactory.createTitledBorder(GT + ._("Cartoon of Page:"))); pageCartoonPanel.add(pageCartoonLabel); - // editorScrollPane = getInstructionPane(w, h); + // editorScrollPane = getInstructionPane(w, h); //Create the save button. saveButton = new JButton(GT._("Save HTML as...")); saveButton.addActionListener(this); JPanel savePanel = new JPanel(); savePanel.add(saveButton); - + //Path to applet panel JPanel pathPanel = new JPanel(); pathPanel.setLayout(new BorderLayout()); - pathPanel.setBorder(BorderFactory - .createTitledBorder(GT._("Relative server path to jar files:"))); + pathPanel.setBorder(BorderFactory.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(GT._("Relative local path to jar files:"))); + pathPanel2.setBorder(BorderFactory.createTitledBorder(GT + ._("Relative local path to jar files:"))); pathPanel2.add(localAppletPath, BorderLayout.NORTH); - + //Page Author Panel JPanel authorPanel = new JPanel(); - authorPanel.setBorder(BorderFactory - .createTitledBorder(GT._("Author (your name):"))); + authorPanel.setBorder(BorderFactory.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(GT._("Browser window title for this web page:"))); + titlePanel.setBorder(BorderFactory.createTitledBorder(GT + ._("Browser window title for this web page:"))); titlePanel.add(webPageTitle, BorderLayout.NORTH); titlePanel.add(savePanel, BorderLayout.SOUTH); @@ -250,7 +260,7 @@ //Combine previous three panels into one JPanel leftpanel = new JPanel(); leftpanel.setLayout(new BorderLayout()); - // leftpanel.add(editorScrollPane, BorderLayout.CENTER); + // leftpanel.add(editorScrollPane, BorderLayout.CENTER); leftpanel.add(helpButton, BorderLayout.NORTH); leftpanel.add(pageCartoonPanel, BorderLayout.CENTER); leftpanel.add(settingsPanel, BorderLayout.SOUTH); @@ -412,7 +422,7 @@ } if (e.getSource() == helpButton){ HelpDialog webExportHelp = new HelpDialog(WebExport.getFrame(), - WebExport.getResource(this, infoFile)); + WebExport.getHtmlResource(this, panelName + "_instructions")); webExportHelp.setVisible(true); webExportHelp.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } @@ -483,12 +493,12 @@ LogPanel.log(" ...adding " + javaname + ".spt"); writeFile(datadirPath + "/" + javaname + ".spt", script); } - String html = getResourceString(templateName); + String html = getResourceString(panelName + "_template"); html = fixHtml(html); appletInfoDivs = ""; StringBuffer appletDefs = new StringBuffer(); if (!useAppletJS) - htmlAppletTemplate = getResourceString(appletTemplateName); + htmlAppletTemplate = getResourceString(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-14 20:55:55
|
Revision: 9732 http://jmol.svn.sourceforge.net/jmol/?rev=9732&view=rev Author: hansonr Date: 2008-08-14 20:55:46 +0000 (Thu, 14 Aug 2008) Log Message: ----------- version=11.6.RC7_dev # bug fix: state definition for lcaoCartoons, isosurface with IDs containing spaces # new feature: $*xx* double wild cards # new feature: generally for objects (draw,pmesh,isosurface,etc.) use DISPLAY/HIDE rather than ON/OFF # so as to be consistent with other objects. (OFF was not deleting these) # new feature: support for application transparent background -- "-b" command switch (testing only) # and setAppletContext "-b" switch as well. # bug fix: structure helix|sheet|turn|none {atomExpression} was undocumented and had state issues # new feature: HIDE $xxx # new feature: DISPLAY $xxx # new feature: DELETE $xxx # bug fix: adaptation for malformed PDB files (HEADER with nothing following it) # bug fix: more language localization in webexport # new feature: applet message regarding help and command entry Modified Paths: -------------- trunk/Jmol/build.xml trunk/Jmol/src/org/jmol/g3d/Graphics3D.java trunk/Jmol/src/org/jmol/g3d/Platform3D.java trunk/Jmol/src/org/jmol/g3d/Swing3D.java trunk/Jmol/src/org/jmol/shape/Mesh.java trunk/Jmol/src/org/jmol/shape/MeshCollection.java trunk/Jmol/src/org/jmol/shapespecial/Draw.java trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java trunk/Jmol/src/org/jmol/shapesurface/LcaoCartoon.java trunk/Jmol/src/org/jmol/shapesurface/MolecularOrbital.java trunk/Jmol/src/org/jmol/shapesurface/Pmesh.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/JmolConstants.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/Jmol.java Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/build.xml 2008-08-14 20:55:46 UTC (rev 9732) @@ -13,7 +13,7 @@ <!-- for some reason, I can't get ant to use this ${java.version} property as the value of the source parameter --> <property name="java.version" value="1.4" /> - <property name="debug" value="off" /> + <property name="debug" value="on" /> <property name="deprecation" value="off" /> <property name="optimization" value="off" /> Modified: trunk/Jmol/src/org/jmol/g3d/Graphics3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Graphics3D.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/g3d/Graphics3D.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -257,16 +257,13 @@ */ public Graphics3D(Component awtComponent) { platform = Platform3D.createInstance(awtComponent); - // Font3D.initialize(platform); this.line3d = new Line3D(this); this.circle3d = new Circle3D(this); this.sphere3d = new Sphere3D(this); - //this.colix3d = new Colix3D(); this.triangle3d = new Triangle3D(this); this.cylinder3d = new Cylinder3D(this); this.hermite3d = new Hermite3D(this); this.normix3d = new Normix3D(); - // setFontOfSize(13); } public void setg3dExporter(Graphics3D g3d, JmolExportInterface exporter) { @@ -393,6 +390,8 @@ if (antialiasThisFrame) downsampleFullSceneAntialiasing(false); } + if (backgroundTransparent && (backgroundArgb & 0xFF000000) == 0) + platform.setTransparency(); platform.notifyEndOfRendering(); //setWidthHeight(antialiasEnabled); currentlyRendering = false; @@ -493,6 +492,13 @@ private int backgroundArgb; public Image backgroundImage; + private boolean backgroundTransparent; + + public void setBackgroundTransparent(boolean TF) { + backgroundTransparent = TF; + platform.setBackgroundTransparent(TF); + } + public int bgcolor; /** @@ -2939,5 +2945,4 @@ plotImage(Integer.MIN_VALUE, 0, Integer.MIN_VALUE, backgroundImage, jmolRenderer, (short) 0, 0, 0); } - } Modified: trunk/Jmol/src/org/jmol/g3d/Platform3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Platform3D.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/g3d/Platform3D.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -148,6 +148,12 @@ pBuffer[i] = argbBackground; } } + + void setTransparency() { + for (int i = bufferSize; --i >= 0; ) + if (pBuffer[i] == argbBackground) + pBuffer[i] &= 0x00FFFFFF; + } void clearTBuffer() { for (int i = bufferSizeT; --i >= 0; ) { @@ -246,4 +252,7 @@ } } } + + void setBackgroundTransparent(boolean tf) { + } } Modified: trunk/Jmol/src/org/jmol/g3d/Swing3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Swing3D.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/g3d/Swing3D.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -54,13 +54,34 @@ final class Swing3D extends Platform3D { - final static DirectColorModel rgbColorModel = + private final static DirectColorModel rgbColorModel = new DirectColorModel(24, 0x00FF0000, 0x0000FF00, 0x000000FF, 0x00000000); - final static int[] sampleModelBitMasks = + private final static int[] sampleModelBitMasks = { 0x00FF0000, 0x0000FF00, 0x000000FF }; - + + private final static DirectColorModel rgbColorModelT = + new DirectColorModel(32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000); + + private final static int[] sampleModelBitMasksT = + { 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000 }; + + + Image allocateImage() { + if (backgroundTransparent) + return new BufferedImage( + rgbColorModelT, + Raster.createWritableRaster( + new SinglePixelPackedSampleModel( + DataBuffer.TYPE_INT, + windowWidth, + windowHeight, + sampleModelBitMasksT), + new DataBufferInt(pBuffer, windowSize), + null), + false, + null); return new BufferedImage( rgbColorModel, Raster.createWritableRaster( @@ -75,6 +96,12 @@ null); } + private static boolean backgroundTransparent = false; + + void setBackgroundTransparent(boolean tf) { + backgroundTransparent = true; + } + Image allocateOffscreenImage(int width, int height) { return new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); } @@ -85,6 +112,9 @@ static Graphics getStaticGraphics(Image image) { Graphics2D g2d = ((BufferedImage) image).createGraphics(); + if (backgroundTransparent) { + // what here? + } // miguel 20041122 // we need to turn off text antialiasing on OSX when // running in a web browser Modified: trunk/Jmol/src/org/jmol/shape/Mesh.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Mesh.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/shape/Mesh.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -28,6 +28,7 @@ import java.util.Vector; import org.jmol.util.ArrayUtil; +import org.jmol.util.Escape; import org.jmol.viewer.JmolConstants; import org.jmol.api.JmolRendererInterface; import org.jmol.g3d.*; @@ -197,7 +198,6 @@ } public void setPolygonCount(int polygonCount) { - //Logger.debug("Mesh setPolygonCount" + polygonCount); this.polygonCount = polygonCount; if (polygonCount < 0) return; @@ -235,29 +235,10 @@ this.colix = colix; } - /* - public void checkForDuplicatePoints(float cutoff) { - //not implemented - float cutoff2 = cutoff * cutoff; - for (int i = vertexCount; --i >= 0; ) - for (int j = i; --j >= 0; ) { - float dist2 = vertices[i].distanceSquared(vertices[j]); - if ((dist2 < cutoff2) && Logger.debugging) { - Logger.debug("Mesh.checkForDuplicates " + - vertices[i] + "<->" + vertices[j] + - " : " + Math.sqrt(dist2)); - } - } - } - Hashtable getShapeDetail() { - return null; - } - */ - public String getState(String type) { StringBuffer s = new StringBuffer(type); if (!type.equals("mo")) - s.append(" ID ").append(thisID); + s.append(" ID ").append(Escape.escape(thisID)); s.append(fillTriangles ? " fill" : " noFill"); s.append(drawTriangles ? " mesh" : " noMesh"); s.append(showPoints ? " dots" : " noDots"); @@ -267,7 +248,7 @@ s.append(lighting == JmolConstants.BACKLIT ? " backlit" : lighting == JmolConstants.FULLYLIT ? " fullylit" : " frontlit"); if (!visible) - s.append(" off"); + s.append(" hidden"); return s.toString(); } } Modified: trunk/Jmol/src/org/jmol/shape/MeshCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/MeshCollection.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/shape/MeshCollection.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -175,6 +175,12 @@ return; } + if ("hidden" == propertyName) { + value = new Integer(((Boolean)value).booleanValue() ? Token.off: Token.on); + propertyName = "token"; + //continue + } + if ("token" == propertyName) { int tok = ((Integer) value).intValue(); boolean test = true; @@ -341,6 +347,27 @@ } return sb.toString(); } + if (property == "command") { + String key = previousMeshID.toUpperCase(); + boolean isWild = TextFormat.isWild(key); + StringBuffer sb = new StringBuffer(); + for (int i = meshCount; --i >= 0;) { + String id = meshes[i].thisID.toUpperCase(); + if (id.equals(key) || isWild && TextFormat.isMatch(id, key, true, true)) + getMeshCommand(sb, i); + } + return sb.toString(); + } + if (property.startsWith("checkID:")) { + // returns FIRST match + String key = property.substring(8).toUpperCase(); + boolean isWild = TextFormat.isWild(key); + for (int i = meshCount; --i >= 0;) { + String id = meshes[i].thisID.toUpperCase(); + if (id.equals(key) || isWild && TextFormat.isMatch(id, key, true, true)) + return id; + } + } return null; } @@ -409,59 +436,65 @@ } public String getShapeState() { - StringBuffer s = new StringBuffer("\n"); - for (int i = 0; i < meshCount; i++) { - Mesh mesh = meshes[i]; - String cmd = mesh.scriptCommand; - if (cmd == null) - continue; - int pt = cmd.indexOf(";#"); - //not perfect -- user may have that in a title, I suppose... - if (pt >= 0) - cmd = cmd.substring(0, pt + 1); - if (mesh.bitsets != null) { - cmd += "# " - + (mesh.bitsets[0] == null ? "({null})" : Escape.escape(mesh.bitsets[0])) - + " " + (mesh.bitsets[1] == null ? "({null})" : Escape.escape(mesh.bitsets[1])) - + (mesh.bitsets[2] == null ? "" : "/" + Escape.escape(mesh.bitsets[2])); - } - if (mesh.modelIndex >= 0) - cmd += "# MODEL({" + mesh.modelIndex + "})"; - if (mesh.linkedMesh != null) - cmd += " LINK"; - if (mesh.data1 != null) { - String name = ((String) mesh.data1.elementAt(0)).toLowerCase(); - if (name.indexOf("data2d_") != 0) - name = "data2d_" + name; - name = TextFormat.simpleReplace(name, "_xyz", "_"); - cmd = Escape.encapsulateData(name, mesh.data1.elementAt(5)) - + " " + cmd + "# DATA=\"" + name + "\""; - } - if (mesh.data2 != null) { - String name = ((String) mesh.data2.elementAt(0)).toLowerCase(); - if (name.indexOf("data2d_") != 0) - name = "data2d_" + name; - name = TextFormat.simpleReplace(name, "_xyz", "_"); - cmd = Escape.encapsulateData(name, mesh.data2.elementAt(5)) - + " " + cmd + "# DATA2=\"" + name + "\""; - } - - if (mesh.modelIndex >= 0 && modelCount > 1) - appendCmd(s, "frame " + viewer.getModelNumberDotted(mesh.modelIndex)); - appendCmd(s, cmd); - if (cmd.charAt(0) != '#') { - if (allowMesh) - appendCmd(s, mesh.getState(myType)); - if (mesh.isColorSolid) - appendCmd(s, getColorCommand("$" + mesh.thisID, mesh.colix)); - else if (mesh.colorCommand != null) - appendCmd(s, mesh.colorCommand); - } - } - return s.toString(); + StringBuffer sb = new StringBuffer("\n"); + for (int i = 0; i < meshCount; i++) + getMeshCommand(sb, i); + return sb.toString(); } - - public void setVisibilityFlags(BitSet bs) { + + private void getMeshCommand(StringBuffer sb, int i) { + Mesh mesh = meshes[i]; + String cmd = mesh.scriptCommand; + if (cmd == null) + return; + cmd = cmd.replace('\t',' '); + int pt = cmd.indexOf(";#"); + //not perfect -- user may have that in a title, I suppose... + if (pt >= 0) + cmd = cmd.substring(0, pt + 1); + if (mesh.bitsets != null) { + cmd += "# " + + (mesh.bitsets[0] == null ? "({null})" : Escape.escape(mesh.bitsets[0])) + + " " + (mesh.bitsets[1] == null ? "({null})" : Escape.escape(mesh.bitsets[1])) + + (mesh.bitsets[2] == null ? "" : "/" + Escape.escape(mesh.bitsets[2])); + } + if (cmd.toLowerCase().indexOf(" ID ") < 0 && !myType.equals("mo")) + cmd += "# ID=\"" + mesh.thisID + "\""; + if (mesh.modelIndex >= 0) + cmd += "# MODEL({" + mesh.modelIndex + "})"; + if (mesh.linkedMesh != null) + cmd += " LINK"; + if (mesh.data1 != null) { + String name = ((String) mesh.data1.elementAt(0)).toLowerCase(); + if (name.indexOf("data2d_") != 0) + name = "data2d_" + name; + name = TextFormat.simpleReplace(name, "_xyz", "_"); + cmd = Escape.encapsulateData(name, mesh.data1.elementAt(5)) + + " " + cmd + "# DATA=\"" + name + "\""; + } + if (mesh.data2 != null) { + String name = ((String) mesh.data2.elementAt(0)).toLowerCase(); + if (name.indexOf("data2d_") != 0) + name = "data2d_" + name; + name = TextFormat.simpleReplace(name, "_xyz", "_"); + cmd = Escape.encapsulateData(name, mesh.data2.elementAt(5)) + + " " + cmd + "# DATA2=\"" + name + "\""; + } + + if (mesh.modelIndex >= 0 && modelCount > 1) + appendCmd(sb, "frame " + viewer.getModelNumberDotted(mesh.modelIndex)); + appendCmd(sb, cmd); + if (cmd.charAt(0) != '#') { + if (allowMesh) + appendCmd(sb, mesh.getState(myType)); + if (mesh.isColorSolid) + appendCmd(sb, getColorCommand(myType, mesh.colix)); + else if (mesh.colorCommand != null) + appendCmd(sb, mesh.colorCommand); + } +} + +public void setVisibilityFlags(BitSet bs) { /* * set all fixed objects visible; others based on model being displayed * Modified: trunk/Jmol/src/org/jmol/shapespecial/Draw.java =================================================================== --- trunk/Jmol/src/org/jmol/shapespecial/Draw.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/shapespecial/Draw.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -37,6 +37,7 @@ import org.jmol.util.BitSetUtil; import org.jmol.util.Escape; import org.jmol.util.Logger; +import org.jmol.util.TextFormat; import org.jmol.viewer.JmolConstants; import org.jmol.viewer.MouseManager; import org.jmol.viewer.Token; @@ -79,7 +80,6 @@ private boolean isArrow; private boolean isVector; private boolean isCircle; - private boolean isVisible; private boolean isPerpendicular; private boolean isCylinder; private boolean isVertices; @@ -115,7 +115,7 @@ isFixed = isReversed = isRotated45 = isCrossed = noHead = false; isCurve = isArc = isArrow = isPlane = isCircle = isCylinder = false; isVertices = isPerpendicular = isVector = false; - isVisible = isValid = true; + isValid = true; length = Float.MAX_VALUE; diameter = 0; width = 0; @@ -295,10 +295,12 @@ width = viewer.calcRotationRadius(bs) * 2.0f; return; } + if ("modelBasedPoints" == propertyName) { vData.add(new Object[] { new Integer(PT_MODEL_BASED_POINTS), value }); return; } + if ("set" == propertyName) { if (thisMesh == null) { allocMesh(null); @@ -313,21 +315,13 @@ thisMesh.initialize(JmolConstants.FULLYLIT); setAxes(thisMesh); thisMesh.title = title; - thisMesh.visible = isVisible; + thisMesh.visible = true; } nPoints = -1; // for later scaling vData = null; return; } - if ("off" == propertyName) { - isVisible = false; - //let pass through - } - - if ("translucency" == propertyName) { - //let pass through - } - + if (propertyName == "deleteModelAtoms") { int modelIndex = ((int[]) ((Object[]) value)[2])[0]; //int firstAtomDeleted = ((int[])((Object[])value)[2])[1]; @@ -1036,10 +1030,23 @@ } private String getDrawCommand(DrawMesh mesh) { - if (mesh == null) - return "no current draw object"; modelCount = viewer.getModelCount(); - return getDrawCommand(mesh, mesh.modelIndex); + if (mesh != null) + return getDrawCommand(mesh, mesh.modelIndex); + + StringBuffer sb = new StringBuffer(); + String key = (explicitID && previousMeshID != null + && TextFormat.isWild(previousMeshID) ? previousMeshID.toUpperCase() + : null); + if (key != null && key.length() == 0) + key = null; + for (int i = 0; i < meshCount; i++) { + DrawMesh m = (DrawMesh) meshes[i]; + if (key == null + || TextFormat.isMatch(m.thisID.toUpperCase(), key, true, true)) + sb.append(getDrawCommand(m, m.modelIndex)); + } + return sb.toString(); } private String getDrawCommand(DrawMesh mesh, int iModel) { @@ -1049,7 +1056,7 @@ StringBuffer str = new StringBuffer(); if (!mesh.isFixed && iModel >= 0 && modelCount > 1) appendCmd(str,"frame " + viewer.getModelNumberDotted(iModel)); - str.append(" draw ID ").append(mesh.thisID); + str.append(" draw ID ").append(Escape.escape(mesh.thisID)); if (mesh.isFixed) str.append(" fixed"); if (iModel < 0) Modified: trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -98,6 +98,8 @@ import org.jmol.util.Logger; import org.jmol.util.ColorEncoder; import org.jmol.util.ArrayUtil; +import org.jmol.util.Parser; +import org.jmol.util.TextFormat; import org.jmol.viewer.JmolConstants; import org.jmol.jvxl.readers.JvxlReader; @@ -192,7 +194,7 @@ if (thisMesh != null) { thisMesh.vertexColixes = null; thisMesh.isColorSolid = true; - } else { + } else if (!TextFormat.isWild(previousMeshID)){ for (int i = meshCount; --i >= 0;) { isomeshes[i].vertexColixes = null; isomeshes[i].isColorSolid = true; @@ -396,7 +398,7 @@ if (property == "jvxlSurfaceData") return JvxlReader.jvxlGetFile(jvxlData, title, "", false, 1, thisMesh .getState(myType), (thisMesh.scriptCommand == null ? "" : thisMesh.scriptCommand)); - return null; + return super.getProperty(property, index); } private boolean getScriptBitSets(String script, BitSet[] bsCmd) { @@ -744,7 +746,7 @@ thisMesh.bitsets = null; if (script != null) { if (script.charAt(0) == ' ') { // lobe only - script = myType + " ID " + thisMesh.thisID + script; + script = myType + " ID " + Escape.escape(thisMesh.thisID) + script; } else if (sg.getIUseBitSets()) { thisMesh.bitsets = new BitSet[3]; thisMesh.bitsets[0] = sg.getBsSelected(); @@ -752,6 +754,9 @@ thisMesh.bitsets[2] = viewer.getBitSetTrajectories(); } } + int pt; + if (!explicitID && script != null && (pt = script.indexOf("# ID=")) >= 0) + thisMesh.thisID = Parser.getNextQuotedString(script, pt); thisMesh.scriptCommand = script; Vector v = (Vector) sg.getProperty("functionXYinfo", 0); if (thisMesh.data1 == null) Modified: trunk/Jmol/src/org/jmol/shapesurface/LcaoCartoon.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/LcaoCartoon.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/shapesurface/LcaoCartoon.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -31,7 +31,6 @@ import org.jmol.util.Escape; import org.jmol.util.Logger; import org.jmol.util.TextFormat; -import org.jmol.viewer.Token; public class LcaoCartoon extends Isosurface { @@ -119,7 +118,7 @@ //pass through } - if (propertyName == "translucentLevel") { + if ("translucentLevel" == propertyName) { translucentLevel = ((Float) value).floatValue(); //pass through } @@ -155,17 +154,16 @@ deleteLcaoCartoon(); return; } - - if ("token" == propertyName) { - switch(((Integer)value).intValue()) { - case Token.on: - setLcaoOn(true); - return; - case Token.off: - setLcaoOn(false); - return; - } + + if ("on" == propertyName) { + setLcaoOn(true); + return; } + + if ("off" == propertyName) { + setLcaoOn(false); + return; + } super.setProperty(propertyName, value, bs); @@ -221,7 +219,7 @@ deleteMesh(i); super.setProperty("init", null, null); super.setProperty("thisID", id, null); - System.out.println("lcaocartoon: " + id); + //System.out.println("lcaocartoon: " + id); if (lcaoScale != null) super.setProperty("scale", lcaoScale, null); if (lcaoColorNeg != null) { Modified: trunk/Jmol/src/org/jmol/shapesurface/MolecularOrbital.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/MolecularOrbital.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/shapesurface/MolecularOrbital.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -34,6 +34,7 @@ import org.jmol.util.ArrayUtil; import org.jmol.util.Escape; import org.jmol.util.Logger; +import org.jmol.viewer.Token; import org.jmol.jvxl.readers.Parameters; public class MolecularOrbital extends Isosurface { @@ -55,10 +56,10 @@ private Integer moColorPos = null; private Integer moColorNeg = null; private boolean moIsPositiveOnly = false; - private boolean moFill = false; - private boolean moMesh = true; - private boolean moDots = false; - private boolean moFrontOnly = true; + private int moFill = Token.nofill; + private int moMesh = Token.mesh; + private int moDots = Token.nodots; + private int moFrontOnly = Token.frontonly; private String moTitleFormat = null; private boolean moDebug; private int myColorPt; @@ -89,8 +90,8 @@ if (!htModels.containsKey(strID)) htModels.put(strID, new Hashtable()); thisModel = (Hashtable) htModels.get(strID); - moNumber = (!thisModel.containsKey("moNumber") ? 0 - : ((Integer) thisModel.get("moNumber")).intValue()); + moNumber = (!thisModel.containsKey("moNumber") ? 0 : ((Integer) thisModel + .get("moNumber")).intValue()); return; } @@ -163,6 +164,34 @@ //pass through } + if ("delete" == propertyName) { + htModels.remove(strID); + //pass through + } + + if ("token" == propertyName) { + int tok = ((Integer) value).intValue(); + switch (tok) { + case Token.dots: + case Token.nodots: + moDots = tok; + break; + case Token.fill: + case Token.nofill: + moFill = tok; + break; + case Token.mesh: + case Token.nomesh: + moMesh = tok; + break; + case Token.frontonly: + case Token.notfrontonly: + moFrontOnly = tok; + break; + } + // pass through + } + if ("translucency" == propertyName) { if (thisModel == null) { if (currentMesh == null) @@ -173,49 +202,25 @@ //pass through } - if ("dots" == propertyName) { - moDots = (value == Boolean.TRUE); - //pass through - } - if ("mesh" == propertyName) { - moMesh = (value == Boolean.TRUE); - //pass through - } - - if ("frontOnly" == propertyName) { - moFrontOnly = (value == Boolean.TRUE); - //pass through - } - - if ("fill" == propertyName) { - moFill = (value == Boolean.TRUE); - //pass through - } - - if ("delete" == propertyName) { - htModels.remove(strID); - //pass through - } - if (propertyName == "deleteModelAtoms") { - int modelIndex = ((int[])((Object[])value)[2])[0]; + int modelIndex = ((int[]) ((Object[]) value)[2])[0]; Hashtable htModelsNew = new Hashtable(); for (int i = meshCount; --i >= 0;) { if (meshes[i] == null) continue; if (meshes[i].modelIndex == modelIndex) { - meshCount--; - if (meshes[i] == currentMesh) { - currentMesh = null; - thisModel = null; - } - meshes = (IsosurfaceMesh[]) ArrayUtil.deleteElements(meshes, i, 1); - continue; + meshCount--; + if (meshes[i] == currentMesh) { + currentMesh = null; + thisModel = null; + } + meshes = (IsosurfaceMesh[]) ArrayUtil.deleteElements(meshes, i, 1); + continue; } Hashtable htModel = (Hashtable) htModels.get(meshes[i].thisID); if (meshes[i].modelIndex > modelIndex) { - meshes[i].modelIndex--; - meshes[i].thisID = getId(meshes[i].modelIndex); + meshes[i].modelIndex--; + meshes[i].thisID = getId(meshes[i].modelIndex); } htModelsNew.put(meshes[i].thisID, htModel); } @@ -263,7 +268,7 @@ } return str.toString(); } - return null; + return super.getProperty(propertyName, param); } protected void clearSg() { @@ -324,11 +329,10 @@ super.setProperty("translucenctLevel", moTranslucentLevel, null); if (moTranslucency != null) super.setProperty("translucency", moTranslucency, null); - super.setProperty("fill", moFill ? Boolean.TRUE : Boolean.FALSE, null); - super.setProperty("mesh", moMesh ? Boolean.TRUE : Boolean.FALSE, null); - super.setProperty("dots", moDots ? Boolean.TRUE : Boolean.FALSE, null); - super.setProperty("frontOnly", moFrontOnly ? Boolean.TRUE : Boolean.FALSE, - null); + super.setProperty("token", new Integer(moFill), null); + super.setProperty("token", new Integer(moMesh), null); + super.setProperty("token", new Integer(moDots), null); + super.setProperty("token", new Integer(moFrontOnly), null); thisModel.put("mesh", currentMesh); return; Modified: trunk/Jmol/src/org/jmol/shapesurface/Pmesh.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/Pmesh.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/shapesurface/Pmesh.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -74,7 +74,6 @@ private boolean isOnePerLine; private boolean isBinary; - private int modelIndex; private boolean iHaveModelIndex; String pmeshError; Modified: trunk/Jmol/src/org/jmol/util/TextFormat.java =================================================================== --- trunk/Jmol/src/org/jmol/util/TextFormat.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/util/TextFormat.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -410,11 +410,18 @@ int cchs = s.length(); if (cchs == 0 || cchWildcard == 0) return false; + boolean isStar0 = (checkStar && allowInitialStar ? strWildcard.charAt(0) == '*' : false); + if (isStar0 && strWildcard.charAt(cchWildcard - 1) == '*') + return (cchWildcard < 3 || s.indexOf(strWildcard.substring(1, + cchWildcard - 1)) >= 0); + String qqq = "????"; + while (qqq.length() < s.length()) + qqq += qqq; if (checkStar) { - if (allowInitialStar && strWildcard.charAt(0) == '*') - strWildcard = "??????????" + strWildcard.substring(1); + if (allowInitialStar && isStar0) + strWildcard = qqq + strWildcard.substring(1); if (strWildcard.charAt(ich = strWildcard.length() - 1) == '*') - strWildcard = strWildcard.substring(0, ich) + "??????????"; + strWildcard = strWildcard.substring(0, ich) + qqq; cchWildcard = strWildcard.length(); } Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -537,6 +537,11 @@ addTokenToPrefix(new Token(Token.decimal, new Float(value))); continue; } + if (lookingAtObjectID(nTokens == 1)) { + addTokenToPrefix(Token.getTokenFromName("$")); + addTokenToPrefix(new Token(Token.identifier, script.substring(ichToken, ichToken + cchToken))); + continue; + } if (lookingAtDecimal()) { value = // can't use parseFloat with jvm 1.1 @@ -842,10 +847,10 @@ } } break; + case Token.display: + case Token.hide: case Token.restrict: case Token.select: - case Token.display: - case Token.hide: case Token.delete: case Token.define: if (tok == Token.define) { @@ -1369,6 +1374,37 @@ return bs; } + private boolean lookingAtObjectID(boolean allowWildID) { + int ichT = ichToken; + if (ichT == cchScript || script.charAt(ichT) != '$') + return false; + if (++ichT != cchScript && script.charAt(ichT) == '"') + return false; + while (ichT < cchScript) { + char ch; + if (Character.isWhitespace(ch = script.charAt(ichT))) { + if (ichT == ichToken + 1) + return false; + break; + } + if (!Character.isLetterOrDigit(ch)) { + switch (ch) { + default: + return false; + case '*': + if (!allowWildID) + return false; + case '~': + case '_': + break; + } + } + ichT++; + } + cchToken = ichT - (++ichToken); + return true; + } + private boolean lookingAtLookupToken() { if (ichToken == cchScript) return false; @@ -1483,10 +1519,9 @@ && !tokAttrOr(tokCommand, Token.atomExpressionCommand, Token.implicitStringCommand)); boolean checkExpression = isEmbeddedExpression || (tokAttr(tokCommand, Token.atomExpressionCommand)); - // $ at beginning disallow expression checking for center command - if (tokCommand == Token.center && tokAt(1) == Token.dollarsign) + // $ at beginning disallow expression checking for center, delete, hide, or display commands + if (tokAt(1) == Token.dollarsign && tokAttr(tokCommand, Token.atomExpressionCommand)) checkExpression = false; - if (checkExpression && !compileExpression()) return false; Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -2287,15 +2287,6 @@ return v; } - private int setShapeByNameParameter(int index) throws ScriptException { - String objectName = objectNameParameter(index); - int shapeType = viewer.getShapeIdFromObjectName(objectName); - if (!isSyntaxCheck && shapeType < 0) - error(ERROR_objectNameExpected); - setShapeProperty(shapeType, "thisID", objectName); - return shapeType; - } - private boolean booleanParameter(int i) throws ScriptException { if (statementLength == i) return true; @@ -3611,6 +3602,41 @@ viewer.setNewRotationCenter(center); } + + private String setObjectProperty() throws ScriptException { + String s = ""; + String id = getShapeNameParameter(2); + if (isSyntaxCheck) + return ""; + int iTok = iToken; + boolean isWild = TextFormat.isWild(id); + for (int iShape = JmolConstants.SHAPE_MAX_HAS_ID; --iShape >= JmolConstants.SHAPE_MIN_HAS_ID;) { + if (iShape == JmolConstants.SHAPE_MO + || viewer.getShapeProperty(iShape, "checkID:" + id) == null) + continue; + setShapeProperty(iShape, "thisID", id); + int tok = tokAt(0); + switch (tok) { + case Token.delete: + setShapeProperty(iShape, "delete", null); + break; + case Token.hide: + case Token.display: + setShapeProperty(iShape, "hidden", tok == Token.display ? Boolean.FALSE + : Boolean.TRUE); + break; + case Token.show: + if (iShape == JmolConstants.SHAPE_ISOSURFACE && !isWild) + return getIsosurfaceJvxl(); + s += (String) viewer.getShapeProperty(iShape, "command") + "\n"; + break; + case Token.color: + colorShape(iShape, iTok + 1, false); + break; + } + } + return s; + } private void color() throws ScriptException { int argb = 0; if (isColorParam(1)) { @@ -3619,8 +3645,7 @@ } switch (getToken(1).tok) { case Token.dollarsign: - // color $ whatever green - colorShape(setShapeByNameParameter(2), 3, false); + setObjectProperty(); return; case Token.none: case Token.spacefill: @@ -5222,6 +5247,10 @@ } private void display(boolean isDisplay) throws ScriptException { + if (tokAt(1) == Token.dollarsign) { + setObjectProperty(); + return; + } BitSet bs = (statementLength == 1 ? null : expression(1)); if (isSyntaxCheck) return; @@ -5236,6 +5265,10 @@ zap(true); return; } + if (tokAt(1) == Token.dollarsign) { + setObjectProperty(); + return; + } BitSet bs = expression(statement, 1, 0, true, false, true, false); if (isSyntaxCheck) return; @@ -5820,9 +5853,7 @@ setShapeSize(JmolConstants.SHAPE_ELLIPSOIDS, mad); } - private int setShapeId(int iShape, int i, boolean idSeen) throws ScriptException { - if (idSeen) - error(ERROR_invalidArgument); + private String getShapeNameParameter(int i) throws ScriptException { String id = parameterAsString(i); boolean isWild = (id.equals("*")); if (id.length() == 0) @@ -5832,6 +5863,8 @@ case Token.nada: case Token.on: case Token.off: + case Token.displayed: + case Token.hidden: case Token.color: case Token.delete: break; @@ -5841,8 +5874,15 @@ } if (tokAt(i + 1) == Token.times) id += parameterAsString(++i); + return id; + } + + private int setShapeId(int iShape, int i, boolean idSeen) throws ScriptException { + if (idSeen) + error(ERROR_invalidArgument); + String id = getShapeNameParameter(i); setShapeProperty(iShape, "thisID", id.toLowerCase()); - return i; + return iToken; } private void setAtomShapeSize(int shape, int defOn) throws ScriptException { @@ -8226,12 +8266,14 @@ echoShapeActive = false; propertyName = "allOff"; break; + case Token.hide: case Token.hidden: propertyName = "hidden"; propertyValue = Boolean.TRUE; break; case Token.on: case Token.display: + case Token.displayed: propertyName = "hidden"; propertyValue = Boolean.FALSE; break; @@ -8294,15 +8336,15 @@ case Token.off: propertyName = "off"; break; - case Token.display: + case Token.hidden: + propertyName = "hidden"; + propertyValue = Boolean.TRUE; + break; + case Token.displayed: case Token.on: propertyName = "hidden"; propertyValue = Boolean.FALSE; break; - case Token.hidden: - propertyName = "hidden"; - propertyValue = Boolean.TRUE; - break; case Token.model: int modelIndex = modelNumberParameter(4); if (isSyntaxCheck) @@ -9317,13 +9359,7 @@ break; case Token.dollarsign: len = 3; - int shapeType = setShapeByNameParameter(2); - if (!isSyntaxCheck) { - if (shapeType == JmolConstants.SHAPE_ISOSURFACE) - msg = getIsosurfaceJvxl(); - else - msg = (String) viewer.getShapeProperty(shapeType, "command"); - } + msg = setObjectProperty(); break; case Token.boundbox: if (!isSyntaxCheck) { @@ -9923,29 +9959,6 @@ } } - /* - private void drawPoint(String key, Point3f pt, boolean isOn) throws ScriptException { - viewer.loadShape(JmolConstants.SHAPE_DRAW); - setShapeProperty(JmolConstants.SHAPE_DRAW, "init", null); - setShapeProperty(JmolConstants.SHAPE_DRAW, "thisID", key); - setShapeProperty(JmolConstants.SHAPE_DRAW, "points", new Integer(0)); - setShapeProperty(JmolConstants.SHAPE_DRAW, "coord", pt); - setShapeProperty(JmolConstants.SHAPE_DRAW, "set", null); - if (!isOn) - setMeshDisplayProperty(JmolConstants.SHAPE_DRAW, -1, Token.off); - } - - private void drawPlane(String key, Point4f plane, boolean isOn) throws ScriptException { - viewer.loadShape(JmolConstants.SHAPE_ISOSURFACE); - setShapeProperty(JmolConstants.SHAPE_ISOSURFACE, "init", null); - setShapeProperty(JmolConstants.SHAPE_ISOSURFACE, "thisID", key); - setShapeProperty(JmolConstants.SHAPE_ISOSURFACE, "plane", plane); - setShapeProperty(JmolConstants.SHAPE_ISOSURFACE, "nomap", new Float(0)); - if (!isOn) - setMeshDisplayProperty(JmolConstants.SHAPE_ISOSURFACE, -1, Token.off); - } - */ - private void polyhedra() throws ScriptException { /* * needsGenerating: @@ -10177,9 +10190,13 @@ propertyValue = rotAxis; break; case Token.on: + case Token.display: + case Token.displayed: propertyName = "on"; break; case Token.off: + case Token.hide: + case Token.hidden: propertyName = "off"; break; case Token.delete: @@ -10236,11 +10253,13 @@ break; case Token.identifier: String str = parameterAsString(i); - if (str.equalsIgnoreCase("MOLECULAR")) { + if (str.equalsIgnoreCase("ID")) { + str = getShapeNameParameter(++i); + i = iToken; + } else if (str.equalsIgnoreCase("MOLECULAR")) { propertyName = "molecular"; break; - } - if (str.equalsIgnoreCase("CREATE")) { + } else if (str.equalsIgnoreCase("CREATE")) { propertyValue = parameterAsString(++i); propertyName = "create"; if (optParameterAsString(i + 1).equalsIgnoreCase("molecular")) { @@ -11154,10 +11173,11 @@ } if (surfaceObjectSeen && isIsosurface && !isSyntaxCheck) { - String s = (String) viewer.getShapeProperty(iShape, "ID"); float[] dataRange = (float[]) viewer .getShapeProperty(iShape, "dataRange"); Integer n = (Integer) viewer.getShapeProperty(iShape, "count"); + setShapeProperty(iShape, "finalize", null); + String s = (String) viewer.getShapeProperty(iShape, "ID"); if (s != null) { s += " created; number of isosurfaces = " + n; if (dataRange != null && dataRange[0] != dataRange[1]) @@ -11165,7 +11185,6 @@ + "; mapped data range " + dataRange[0] + " to " + dataRange[1]; showString(s); } - setShapeProperty(iShape, "finalize", null); } if (translucency != null) setShapeProperty(iShape, "translucency", translucency); @@ -11189,6 +11208,10 @@ case Token.delete: case Token.on: case Token.off: + case Token.hide: + case Token.hidden: + case Token.display: + case Token.displayed: if (iToken == 1) setShapeProperty(shape, "thisID", (String) null); if (tok == Token.nada) @@ -11199,6 +11222,10 @@ setShapeProperty(shape, "delete", null); return true; } + if (tok == Token.hidden || tok == Token.hide) + tok = Token.off; + else if (tok == Token.displayed || tok == Token.display) + tok = Token.on; // fall through for on/off case Token.frontlit: case Token.backlit: Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-08-14 20:55:46 UTC (rev 9732) @@ -3,11 +3,16 @@ version=11.6.RC7_dev +# bug fix: state definition for lcaoCartoons, isosurface with IDs containing spaces +# new feature: $*xx* double wild cards +# new feature: generally for objects (draw,pmesh,isosurface,etc.) use DISPLAY/HIDE rather than ON/OFF +# so as to be consistent with other objects. (OFF was not deleting these) +# new feature: support for application transparent background -- "-b" command switch (testing only) +# and setAppletContext "-b" switch as well. # bug fix: structure helix|sheet|turn|none {atomExpression} was undocumented and had state issues -# bug fix: set echo myecho ON was not implemented -# new feature: set echo myecho HIDDEN -# new feature: set echo myecho DISPLAY (same as ON) -# new feature: set echo all; set echo HIDDEN/DISPLAY +# new feature: HIDE $xxx +# new feature: DISPLAY $xxx +# new feature: DELETE $xxx # bug fix: adaptation for malformed PDB files (HEADER with nothing following it) # bug fix: more language localization in webexport # new feature: applet message regarding help and command entry Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -2712,6 +2712,7 @@ public final static int SHAPE_POLYHEDRA = 20; // for restrict, uses setProperty(), not setSize() + public final static int SHAPE_MIN_HAS_ID = 21; ////////// public final static int SHAPE_MIN_MESH_COLLECTION = 21; ////////// public final static int SHAPE_DRAW = 21; @@ -2721,16 +2722,19 @@ public final static int SHAPE_ISOSURFACE = 22; public final static int SHAPE_LCAOCARTOON = 23; - public final static int SHAPE_MO = 24; + public final static int SHAPE_MO = 24; //but no ID for MO public final static int SHAPE_PMESH = 25; - public final static int SHAPE_MAX_SURFACE = 26; ////////// + public final static int SHAPE_MAX_SURFACE = 26; ////////// public final static int SHAPE_MAX_MESH_COLLECTION = 26; ////////// - public final static int SHAPE_AXES = 26; - public final static int SHAPE_BBCAGE = 27; - public final static int SHAPE_UCCAGE = 28; - public final static int SHAPE_ECHO = 29; + public final static int SHAPE_ECHO = 26; + + public final static int SHAPE_MAX_HAS_ID = 27; + + public final static int SHAPE_AXES = 27; + public final static int SHAPE_BBCAGE = 28; + public final static int SHAPE_UCCAGE = 29; public final static int SHAPE_HOVER = 30; // last should be frank: @@ -2750,7 +2754,7 @@ "Backbone", "Trace", "Cartoon", "Strands", "MeshRibbon", "Ribbons", "Rockets", "Dipoles", "Vectors", "GeoSurface", "Ellipsoids", "Polyhedra", "Draw", "Isosurface", "LcaoCartoon", "MolecularOrbital", "Pmesh", - "Axes", "Bbcage", "Uccage", "Echo", "Hover", + "Echo", "Axes", "Bbcage", "Uccage", "Hover", "Frank" }; static { @@ -2772,8 +2776,7 @@ Token.meshRibbon, Token.ribbon, Token.rocket, Token.dipole, Token.vector, Token.geosurface, Token.ellipsoid, Token.polyhedra, Token.draw, Token.isosurface, Token.lcaocartoon, Token.mo, Token.pmesh, - Token.axes, Token.boundbox, Token.unitcell, - Token.echo, Token.hover, + Token.echo, Token.axes, Token.boundbox, Token.unitcell, Token.hover, Token.frank }; Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -283,7 +283,8 @@ appletProxy = str.substring(i + 13); str = str.substring(0, i); } - + if (str.indexOf("-b") >= 0) + g3d.setBackgroundTransparent(true); useCommandThread = (str.indexOf("-t") >= 0); if (useCommandThread) scriptManager.startCommandWatcher(true); @@ -3642,14 +3643,7 @@ } public void setShapeProperty(int shapeID, String propertyName, Object value) { - //Eval - //many local - - /* - * Logger.debug("JmolViewer.setShapeProperty("+ - * JmolConstants.shapeClassBases[shapeID]+ "," + propertyName + "," + value + - * ")"); - */ + //Eval, BondCollection, StateManager, local if (shapeID < 0) return; //not applicable modelSet.setShapeProperty(shapeID, propertyName, value, @@ -4573,6 +4567,7 @@ boolean notFound = false; boolean doRepaint = true; while (true) { + //11.5.52 if (key.equalsIgnoreCase("selectAllModels")) { global.selectAllModels = value; Modified: trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/openscience/jmol/app/DisplayPanel.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -39,10 +39,11 @@ private String displaySpeed; - Dimension startupDimension; - boolean haveDisplay; + private Dimension startupDimension; + private boolean haveDisplay; - public DisplayPanel(StatusBar status, GuiMap guimap, boolean haveDisplay, int startupWidth, int startupHeight) { + public DisplayPanel(StatusBar status, GuiMap guimap, boolean haveDisplay, + int startupWidth, int startupHeight) { startupDimension = new Dimension(startupWidth, startupHeight); this.haveDisplay = haveDisplay; this.status = status; @@ -52,7 +53,7 @@ showPaintTime = true; displaySpeed = System.getProperty("display.speed"); if (displaySpeed == null) { - displaySpeed = "ms"; + displaySpeed = "ms"; } setDoubleBuffered(false); } Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-08-14 07:55:40 UTC (rev 9731) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2008-08-14 20:55:46 UTC (rev 9732) @@ -176,7 +176,7 @@ } frame.setTitle("Jmol"); - frame.setBackground(Color.lightGray); + frame.getContentPane().setBackground(Color.lightGray); frame.getContentPane().setLayout(new BorderLayout()); this.splash = splash; @@ -328,8 +328,8 @@ } frame.setLocation(location); } - frame.getContentPane().add("Center", this); + frame.addWindowListener(new Jmol.AppCloser()); frame.pack(); frame.setSize(startupWidth, startupHeight); @@ -475,6 +475,7 @@ String scriptFilename = null; Options options = new Options(); + options.addOption("b", "backgroundtransparent", false, GT._("transparent background")); options.addOption("h", "help", false, GT._("give this help page")); options.addOption("n", "nodisplay", false, GT ._("no display (and also exit when done)")); @@ -583,6 +584,11 @@ isSilent = Boolean.TRUE; } + // transparent background + if (line.hasOption("b")) { + commandOptions += "-b"; + } + // independent command thread if (line.hasOption("t")) { commandOptions += "-t"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-09-11 19:34:32
|
Revision: 9876 http://jmol.svn.sourceforge.net/jmol/?rev=9876&view=rev Author: hansonr Date: 2008-09-11 19:34:25 +0000 (Thu, 11 Sep 2008) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/applet.classes trunk/Jmol/build.xml Added Paths: ----------- trunk/Jmol/src/com/acme/ Removed Paths: ------------- trunk/Jmol/src/org/openscience/jmol/app/ImageCreator.java trunk/Jmol/src/org/openscience/jmol/app/ImageSelection.java trunk/Jmol/src/org/openscience/jmol/app/ImageTyper.java trunk/Jmol/src/org/openscience/jmol/app/PngEncoder.java Modified: trunk/Jmol/applet.classes =================================================================== --- trunk/Jmol/applet.classes 2008-09-11 19:33:38 UTC (rev 9875) +++ trunk/Jmol/applet.classes 2008-09-11 19:34:25 UTC (rev 9876) @@ -10,6 +10,8 @@ org/jmol/appletwrapper/*.java org/jmol/atomdata/*.java org/jmol/bspt/*.java +org/jmol/export/*.java +org/jmol/export/image/*.java org/jmol/g3d/*.java org/jmol/geodesic/*.java org/jmol/i18n/*.java Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2008-09-11 19:33:38 UTC (rev 9875) +++ trunk/Jmol/build.xml 2008-09-11 19:34:25 UTC (rev 9876) @@ -11,7 +11,7 @@ <!-- for some reason, I can't get ant to use this ${java.version} property as the value of the source parameter --> <property name="java.version" value="1.4" /> - <property name="debug" value="off" /> + <property name="debug" value="on" /> <property name="deprecation" value="off" /> <property name="optimization" value="off" /> @@ -310,7 +310,7 @@ <and> <uptodate targetfile="${appjars.dir}"> <srcfiles dir="${lib.dir}" includes="${vecmath.jar}"/> - <srcfiles dir="${lib.dir}" includes="Acme.jar"/> + <!-- srcfiles dir="${lib.dir}" includes="Acme.jar"/ --> <srcfiles dir="${lib.dir}" includes="${itext.jar}"/> <srcfiles dir="${lib.dir}" includes="${commons-cli.jar}"/> </uptodate> @@ -341,7 +341,7 @@ <delete file="build/libjars.timestamp"/> <mkdir dir="${appjars.dir}"/> <unjar dest="${appjars.dir}" src="${lib.dir}/${vecmath.jar}"/> - <unjar dest="${appjars.dir}" src="${lib.dir}/Acme.jar"/> + <!-- unjar dest="${appjars.dir}" src="${lib.dir}/Acme.jar"/ --> <unjar dest="${appjars.dir}" src="${lib.dir}/${itext.jar}"/> <unjar dest="${appjars.dir}" src="${lib.dir}/${commons-cli.jar}"/> <touch file="build/libjars.timestamp"/> @@ -494,10 +494,10 @@ manifest="manifest/appletMonolithic.txt" index="true" > <fileset dir="${applet.classes.dir}" > <include name="**/*" /> + <exclude name="org/jmol/export/**/*" /> </fileset> <fileset dir="${appletjars.dir}" includes="**/*"/> - </jar> - + </jar> <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Main.jar" manifest="manifest/appletMain.txt"> <fileset dir="${applet.classes.dir}"> <include name="org/jmol/api/**" /> @@ -634,6 +634,7 @@ <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Main.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Core.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Jars.jar" /> + <!-- no export here - this is the unsigned applet --> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Quantum.jar" /> @@ -656,11 +657,18 @@ </target> <target name="signed-applet" id="signed-applet" depends="applet-jar"> - <signjar jar="${jmol.applet.build.dir}/JmolApplet.jar" + <jar destfile="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" + manifest="manifest/appletMonolithic.txt" index="true" > + <fileset dir="${applet.classes.dir}" > + <include name="**/*" /> + </fileset> + <fileset dir="${appletjars.dir}" includes="**/*"/> + </jar> + <signjar jar="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" signedjar="${jmol.applet.build.dir}/JmolAppletSigned.jar" keystore="selfSignedCertificate/selfSignedCertificate.store" storepass="selfSignedCertificate" alias="selfSignedCertificate" /> - + <delete file="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" /> <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Main.jar" signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Main.jar" keystore="selfSignedCertificate/selfSignedCertificate.store" @@ -671,6 +679,18 @@ keystore="selfSignedCertificate/selfSignedCertificate.store" storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <jar destfile="${jmol.applet.build.dir}/JmolAppletSigned0_Export.jar.temp" + manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/export/**/*" /> + </fileset> + </jar> + <signjar jar="${jmol.applet.build.dir}/JmolAppletSigned0_Export.jar.temp" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Export.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <delete file="${jmol.applet.build.dir}/JmolAppletSigned0_Export.jar.temp"/> + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Jars.jar" signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Jars.jar" keystore="selfSignedCertificate/selfSignedCertificate.store" @@ -770,6 +790,7 @@ <indexjars> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Main.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Core.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Export.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Jars.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Minimize.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Popup.jar" /> Deleted: trunk/Jmol/src/org/openscience/jmol/app/ImageCreator.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/ImageCreator.java 2008-09-11 19:33:38 UTC (rev 9875) +++ trunk/Jmol/src/org/openscience/jmol/app/ImageCreator.java 2008-09-11 19:34:25 UTC (rev 9876) @@ -1,117 +0,0 @@ -/* $RCSfile$ - * $Author: hansonr $ - * $Date: 2007-06-02 12:14:13 -0500 (Sat, 02 Jun 2007) $ - * $Revision: 7831 $ - * - * 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; - -import java.awt.Image; -import java.io.BufferedWriter; -import java.io.ByteArrayOutputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; - -import org.jmol.api.JmolViewer; -import org.jmol.i18n.GT; -import org.jmol.util.Base64; -import org.jmol.util.JpegEncoder; -import org.jmol.util.Logger; - -import Acme.JPM.Encoders.PpmEncoder; - -public class ImageCreator { - - JmolViewer viewer; - StatusBar status; - - public ImageCreator(JmolViewer viewer, StatusBar status) { - this.viewer = viewer; - this.status = status; - } - - void clipImage(String text) { - if (text == null) { - Image eImage = viewer.getScreenImage(); - ImageSelection.setClipboard(eImage); - viewer.releaseScreenImage(); - return; - } - ImageSelection.setClipboard(text); - } - - public void createImage(String fileName, Object type_or_text_bytes, int quality) { - boolean isBytes = (type_or_text_bytes instanceof byte[]); - String type_or_text = (isBytes ? null : (String) type_or_text_bytes); - boolean isText = (quality == Integer.MIN_VALUE); - if (fileName == null) { - clipImage(type_or_text); - return; - } - try { - FileOutputStream os = new FileOutputStream(fileName); - if (isBytes) { - os.write((byte[]) type_or_text_bytes); - os.flush(); - os.close(); - } else if (isText) { - BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os), 8192); - bw.write(type_or_text); - bw.close(); - os = null; - } else { - Image eImage = viewer.getScreenImage(); - if (type_or_text.equalsIgnoreCase("JPEG") || type_or_text.equalsIgnoreCase("JPG")) { - JpegEncoder jc = new JpegEncoder(eImage, quality, os); - jc.Compress(); - } else if (type_or_text.equalsIgnoreCase("PPM")) { - PpmEncoder pc = new PpmEncoder(eImage, os); - pc.encode(); - } else if (type_or_text.equalsIgnoreCase("PNG")) { - PngEncoder png = new PngEncoder(eImage, false, PngEncoder.FILTER_NONE, quality); - byte[] pngbytes = png.pngEncode(); - os.write(pngbytes); - } else if (type_or_text.equalsIgnoreCase("JPG64")) { - ByteArrayOutputStream osb = new ByteArrayOutputStream(); - JpegEncoder jc = new JpegEncoder(eImage, quality, osb); - jc.Compress(); - osb.flush(); - osb.close(); - StringBuffer jpg = Base64.getBase64(osb.toByteArray()); - os.write(Base64.toBytes(jpg)); - } - os.flush(); - os.close(); - viewer.releaseScreenImage(); - } - } catch (IOException exc) { - viewer.releaseScreenImage(); - if (exc != null) { - if (status != null) { - status.setStatus(1, GT._("IO Exception:")); - status.setStatus(2, exc.toString()); - } - Logger.error("IO Exception", exc); - } - } - } -} Deleted: trunk/Jmol/src/org/openscience/jmol/app/ImageSelection.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/ImageSelection.java 2008-09-11 19:33:38 UTC (rev 9875) +++ trunk/Jmol/src/org/openscience/jmol/app/ImageSelection.java 2008-09-11 19:34:25 UTC (rev 9876) @@ -1,146 +0,0 @@ -/* $RCSfile$ - * $Author$ - * $Date$ - * $Revision$ - * - * Copyright (C) 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 Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -package org.openscience.jmol.app; - -import java.awt.Image; -import java.awt.Toolkit; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.Transferable; -import java.awt.datatransfer.UnsupportedFlavorException; -import java.io.IOException; -import java.awt.datatransfer.Clipboard; - -import org.jmol.util.Logger; - -/** - * This class is used to transfer an {@link Image} into the clipboard. - * - * @author Nicolas Vervelle - */ -public class ImageSelection implements Transferable { - - /** - * The image to transfer into the clipboard. - */ - private Image image; - private String text; - //boolean isText; - - /** - * Transfers <code>image</code> into the clipboard. - * - * @param image Image to transfer into the clipboard. - */ - public static void setClipboard(Image image) { - ImageSelection sel = new ImageSelection(image); - Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel, null); - } - - /** - * Transfers <code>text</code> into the clipboard. - * - * @param text to transfer into the clipboard. - */ - public static void setClipboard(String text) { - ImageSelection sel = new ImageSelection(text); - Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel, null); - } - - - /** - * Constructs a <code>ImageSelection</code>. - * - * @param image The real Image. - */ - public ImageSelection(Image image) { - this.image = image; - } - - /** - * Constructs a <code>ImageSelection</code>. - * - * @param text The text to transfer - */ - public ImageSelection(String text) { - this.text = text; - } - - /* (non-Javadoc) - * @see java.awt.datatransfer.Transferable#getTransferDataFlavors() - */ - public DataFlavor[] getTransferDataFlavors() { - return (text == null ? - new DataFlavor[]{ DataFlavor.imageFlavor } - : new DataFlavor[]{ DataFlavor.stringFlavor }); - } - - /* (non-Javadoc) - * @see java.awt.datatransfer.Transferable#isDataFlavorSupported(java.awt.datatransfer.DataFlavor) - */ - public boolean isDataFlavorSupported(DataFlavor flavor) { - return DataFlavor.imageFlavor.equals(flavor); - } - - /* (non-Javadoc) - * @see java.awt.datatransfer.Transferable#getTransferData(java.awt.datatransfer.DataFlavor) - */ - public Object getTransferData(DataFlavor flavor) - throws UnsupportedFlavorException, IOException { - if (DataFlavor.imageFlavor.equals(flavor)) { - return image; - } else if (DataFlavor.stringFlavor.equals(flavor)) { - return text; - } - throw new UnsupportedFlavorException(flavor); - } - - /** - * Get the String residing on the clipboard. - * from http://www.javapractices.com/Topic82.cjp - * @return any text found on the Clipboard; if none found, return an - * empty String. - */ - public static String getClipboardText() { - String result = null; - Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - Transferable contents = clipboard.getContents(null); - boolean hasTransferableText = (contents != null) - && contents.isDataFlavorSupported(DataFlavor.stringFlavor); - if (hasTransferableText) { - try { - result = (String) contents.getTransferData(DataFlavor.stringFlavor); - } catch (UnsupportedFlavorException ex) { - //highly unlikely since we are using a standard DataFlavor - Logger.error("Clipboard problem", ex); - ex.printStackTrace(); - } catch (IOException ex) { - Logger.error("Clipboard problem", ex); - ex.printStackTrace(); - } - } - return result; - } -} Deleted: trunk/Jmol/src/org/openscience/jmol/app/ImageTyper.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/ImageTyper.java 2008-09-11 19:33:38 UTC (rev 9875) +++ trunk/Jmol/src/org/openscience/jmol/app/ImageTyper.java 2008-09-11 19:34:25 UTC (rev 9876) @@ -1,141 +0,0 @@ -/* $RCSfile$ - * $Author$ - * $Date$ - * $Revision$ - * - * 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.openscience.jmol.app; - -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import javax.swing.JFileChooser; -import javax.swing.JSlider; -import javax.swing.JPanel; -import javax.swing.JComboBox; -import javax.swing.SwingConstants; -import javax.swing.border.TitledBorder; -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.io.File; - -import org.jmol.i18n.GT; - -public class ImageTyper extends JPanel { - - private final String[] Choices = { "JPEG", "PNG", "PPM", "PDF" }; - final String[] Extensions = { "jpg", "png", "ppm", "pdf" }; - private static int def = 0; - String result = Choices[def]; - String extension = Extensions[def]; - JSlider qSlider; - private JComboBox cb; - JFileChooser fileChooser; - - /** - * A simple panel with a combo box for allowing the user to choose - * the input file type. - * - * @param fc the file chooser - */ - public ImageTyper(JFileChooser fc) { - fileChooser = fc; - setLayout(new BorderLayout()); - - JPanel cbPanel = new JPanel(); - cbPanel.setLayout(new FlowLayout()); - cbPanel.setBorder(new TitledBorder(GT._("Image Type"))); - cb = new JComboBox(); - for (int i = 0; i < Choices.length; i++) { - cb.addItem(Choices[i]); - } - cbPanel.add(cb); - cb.setSelectedIndex(def); - cb.addItemListener(new ItemListener() { - - public void itemStateChanged(ItemEvent e) { - - JComboBox source = (JComboBox) e.getSource(); - result = (String) source.getSelectedItem(); - if (result.equals("JPEG")) { - qSlider.setEnabled(true); - } else { - qSlider.setEnabled(false); - } - File selectedFile = fileChooser.getSelectedFile(); - if ((selectedFile != null) && - (selectedFile.getName() != null) && - (selectedFile.getName().endsWith("." + extension))) { - String name = selectedFile.getName(); - name = name.substring(0, name.length() - extension.length()); - name += Extensions[source.getSelectedIndex()]; - File newFile = new File(selectedFile.getPath(), name); - fileChooser.setSelectedFile(newFile); - } - extension = Extensions[source.getSelectedIndex()]; - } - }); - - add(cbPanel, BorderLayout.NORTH); - - JPanel qPanel = new JPanel(); - qPanel.setLayout(new BorderLayout()); - qPanel.setBorder(new TitledBorder(GT._("JPEG Quality"))); - qSlider = new JSlider(SwingConstants.HORIZONTAL, 50, 100, 90); - qSlider.putClientProperty("JSlider.isFilled", Boolean.TRUE); - qSlider.setPaintTicks(true); - qSlider.setMajorTickSpacing(10); - qSlider.setPaintLabels(true); - - qSlider.setEnabled(true); - qPanel.add(qSlider, BorderLayout.SOUTH); - add(qPanel, BorderLayout.SOUTH); - } - - /** - * Memorize the default type for the next time. - */ - public void memorizeDefaultType() { - if ((cb != null) && (cb.getSelectedIndex() >= 0)) { - def = cb.getSelectedIndex(); - } - } - - /** - * @return The file type which contains the user's choice - */ - public String getType() { - return result; - } - - /** - * @return The file extension which contains the user's choice - */ - public String getExtension() { - return extension; - } - - /** - * @return The quality (on a scale from 0 to 10) of the JPEG - * image that is to be generated. Returns -1 if choice was not JPEG. - */ - public int getQuality() { - return qSlider.getValue(); - } -} Deleted: trunk/Jmol/src/org/openscience/jmol/app/PngEncoder.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/PngEncoder.java 2008-09-11 19:33:38 UTC (rev 9875) +++ trunk/Jmol/src/org/openscience/jmol/app/PngEncoder.java 2008-09-11 19:34:25 UTC (rev 9876) @@ -1,603 +0,0 @@ -/* $RCSfile$ - * $Author$ - * $Date$ - * $Revision$ - * - * 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.openscience.jmol.app; - -import java.awt.Image; -import java.awt.image.PixelGrabber; -import java.awt.image.ImageObserver; -import java.util.zip.CRC32; -import java.util.zip.Deflater; -import java.util.zip.DeflaterOutputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -/** - * PngEncoder takes a Java Image object and creates a byte string which can be saved as a PNG file. - * The Image is presumed to use the DirectColorModel. - * - * Thanks to Jay Denny at KeyPoint Software - * http://www.keypoint.com/ - * who let me develop this code on company time. - * - * You may contact me with (probably very-much-needed) improvements, - * comments, and bug fixes at: - * - * da...@ca... - * - * @author J. David Eisenberg - * @author http://catcode.com/pngencoder/ - * @author Christian Ribeaud (chr...@ge...) - * @version 1.4, 31 March 2000 - */ -public class PngEncoder extends Object { - - /** Constant specifying that alpha channel should be encoded. */ - public static final boolean ENCODE_ALPHA = true; - - /** Constant specifying that alpha channel should not be encoded. */ - public static final boolean NO_ALPHA = false; - - /** Constants for filters */ - public static final int FILTER_NONE = 0; - public static final int FILTER_SUB = 1; - public static final int FILTER_UP = 2; - public static final int FILTER_LAST = 2; - - protected byte[] pngBytes; - protected byte[] priorRow; - protected byte[] leftBytes; - protected Image image; - protected int width, height; - protected int bytePos, maxPos; - protected int hdrPos, dataPos, endPos; - protected CRC32 crc = new CRC32(); - protected long crcValue; - protected boolean encodeAlpha; - protected int filter; - protected int bytesPerPixel; - protected int compressionLevel; - - /** - * Class constructor - * - */ - public PngEncoder() { - this(null, false, FILTER_NONE, 0); - } - - /** - * Class constructor specifying Image to encode, with no alpha channel encoding. - * - * @param image A Java Image object which uses the DirectColorModel - * @see java.awt.Image - */ - public PngEncoder(Image image) { - this(image, false, FILTER_NONE, 0); - } - - /** - * Class constructor specifying Image to encode, and whether to encode alpha. - * - * @param image A Java Image object which uses the DirectColorModel - * @param encodeAlpha Encode the alpha channel? false=no; true=yes - * @see java.awt.Image - */ - public PngEncoder(Image image, boolean encodeAlpha) { - this(image, encodeAlpha, FILTER_NONE, 0); - } - - /** - * Class constructor specifying Image to encode, whether to encode alpha, and filter to use. - * - * @param image A Java Image object which uses the DirectColorModel - * @param encodeAlpha Encode the alpha channel? false=no; true=yes - * @param whichFilter 0=none, 1=sub, 2=up - * @see java.awt.Image - */ - public PngEncoder(Image image, boolean encodeAlpha, int whichFilter) { - this(image, encodeAlpha, whichFilter, 0); - } - - - /** - * Class constructor specifying Image source to encode, whether to encode alpha, filter to use, and compression level. - * - * @param image A Java Image object - * @param encodeAlpha Encode the alpha channel? false=no; true=yes - * @param whichFilter 0=none, 1=sub, 2=up - * @param compLevel 0..9 - * @see java.awt.Image - */ - public PngEncoder(Image image, boolean encodeAlpha, int whichFilter, - int compLevel) { - - this.image = image; - this.encodeAlpha = encodeAlpha; - setFilter(whichFilter); - if ((compLevel >= 0) && (compLevel <= 9)) { - this.compressionLevel = compLevel; - } - } - - /** - * Set the image to be encoded - * - * @param image A Java Image object which uses the DirectColorModel - * @see java.awt.Image - * @see java.awt.image.DirectColorModel - */ - public void setImage(Image image) { - this.image = image; - pngBytes = null; - } - - /** - * Creates an array of bytes that is the PNG equivalent of the current image, specifying whether to encode alpha or not. - * - * @param encodeAlpha boolean false=no alpha, true=encode alpha - * @return an array of bytes, or null if there was a problem - */ - byte[] pngEncode(boolean encodeAlpha) { - - byte[] pngIdBytes = { - -119, 80, 78, 71, 13, 10, 26, 10 - }; - - if (image == null) { - return null; - } - width = image.getWidth(null); - height = image.getHeight(null); - //this.image = image; - - /* - * start with an array that is big enough to hold all the pixels - * (plus filter bytes), and an extra 200 bytes for header info - */ - pngBytes = new byte[((width + 1) * height * 3) + 200]; - - /* - * keep track of largest byte written to the array - */ - maxPos = 0; - - bytePos = writeBytes(pngIdBytes, 0); - hdrPos = bytePos; - writeHeader(); - dataPos = bytePos; - if (writeImageData()) { - writeEnd(); - pngBytes = resizeByteArray(pngBytes, maxPos); - } else { - pngBytes = null; - } - return pngBytes; - } - - /** - * Creates an array of bytes that is the PNG equivalent of the current image. - * Alpha encoding is determined by its setting in the constructor. - * - * @return an array of bytes, or null if there was a problem - */ - public byte[] pngEncode() { - return pngEncode(encodeAlpha); - } - - /** - * Set the alpha encoding on or off. - * - * @param encodeAlpha false=no, true=yes - */ - public void setEncodeAlpha(boolean encodeAlpha) { - this.encodeAlpha = encodeAlpha; - } - - /** - * Retrieve alpha encoding status. - * - * @return boolean false=no, true=yes - */ - public boolean getEncodeAlpha() { - return encodeAlpha; - } - - /** - * Set the filter to use - * - * @param whichFilter from constant list - */ - public void setFilter(int whichFilter) { - this.filter = FILTER_NONE; - if (whichFilter <= FILTER_LAST) { - this.filter = whichFilter; - } - } - - /** - * Retrieve filtering scheme - * - * @return int (see constant list) - */ - public int getFilter() { - return filter; - } - - /** - * Set the compression level to use - * - * @param level 0 through 9 - */ - public void setCompressionLevel(int level) { - if ((level >= 0) && (level <= 9)) { - this.compressionLevel = level; - } - } - - /** - * Retrieve compression level - * - * @return int in range 0-9 - */ - public int getCompressionLevel() { - return compressionLevel; - } - - /** - * Increase or decrease the length of a byte array. - * - * @param array The original array. - * @param newLength The length you wish the new array to have. - * @return Array of newly desired length. If shorter than the - * original, the trailing elements are truncated. - */ - protected byte[] resizeByteArray(byte[] array, int newLength) { - - byte[] newArray = new byte[newLength]; - int oldLength = array.length; - - System.arraycopy(array, 0, newArray, 0, Math.min(oldLength, newLength)); - return newArray; - } - - /** - * Write an array of bytes into the pngBytes array. - * Note: This routine has the side effect of updating - * maxPos, the largest element written in the array. - * The array is resized by 1000 bytes or the length - * of the data to be written, whichever is larger. - * - * @param data The data to be written into pngBytes. - * @param offset The starting point to write to. - * @return The next place to be written to in the pngBytes array. - */ - protected int writeBytes(byte[] data, int offset) { - - maxPos = Math.max(maxPos, offset + data.length); - if (data.length + offset > pngBytes.length) { - pngBytes = resizeByteArray(pngBytes, - pngBytes.length + Math.max(1000, data.length)); - } - System.arraycopy(data, 0, pngBytes, offset, data.length); - return offset + data.length; - } - - /** - * Write an array of bytes into the pngBytes array, specifying number of bytes to write. - * Note: This routine has the side effect of updating - * maxPos, the largest element written in the array. - * The array is resized by 1000 bytes or the length - * of the data to be written, whichever is larger. - * - * @param data The data to be written into pngBytes. - * @param nBytes The number of bytes to be written. - * @param offset The starting point to write to. - * @return The next place to be written to in the pngBytes array. - */ - protected int writeBytes(byte[] data, int nBytes, int offset) { - - maxPos = Math.max(maxPos, offset + nBytes); - if (nBytes + offset > pngBytes.length) { - pngBytes = resizeByteArray(pngBytes, - pngBytes.length + Math.max(1000, nBytes)); - } - System.arraycopy(data, 0, pngBytes, offset, nBytes); - return offset + nBytes; - } - - /** - * Write a two-byte integer into the pngBytes array at a given position. - * - * @param n The integer to be written into pngBytes. - * @param offset The starting point to write to. - * @return The next place to be written to in the pngBytes array. - */ - protected int writeInt2(int n, int offset) { - byte[] temp = { - (byte) ((n >> 8) & 0xff), (byte) (n & 0xff) - }; - return writeBytes(temp, offset); - } - - /** - * Write a four-byte integer into the pngBytes array at a given position. - * - * @param n The integer to be written into pngBytes. - * @param offset The starting point to write to. - * @return The next place to be written to in the pngBytes array. - */ - protected int writeInt4(int n, int offset) { - - byte[] temp = { - (byte) ((n >> 24) & 0xff), (byte) ((n >> 16) & 0xff), - (byte) ((n >> 8) & 0xff), (byte) (n & 0xff) - }; - return writeBytes(temp, offset); - } - - /** - * Write a single byte into the pngBytes array at a given position. - * - * @param b The byte to be written into pngBytes. - * @param offset The starting point to write to. - * @return The next place to be written to in the pngBytes array. - */ - protected int writeByte(int b, int offset) { - byte[] temp = { - (byte) b - }; - return writeBytes(temp, offset); - } - - /** - * Write a string into the pngBytes array at a given position. - * This uses the getBytes method, so the encoding used will - * be its default. - * - * @param s The string to be written into pngBytes. - * @param offset The starting point to write to. - * @return The next place to be written to in the pngBytes array. - * @see java.lang.String#getBytes() - */ - protected int writeString(String s, int offset) { - return writeBytes(s.getBytes(), offset); - } - - /** - * Write a PNG "IHDR" chunk into the pngBytes array. - */ - protected void writeHeader() { - - int startPos; - - startPos = bytePos = writeInt4(13, bytePos); - bytePos = writeString("IHDR", bytePos); - width = image.getWidth(null); - height = image.getHeight(null); - bytePos = writeInt4(width, bytePos); - bytePos = writeInt4(height, bytePos); - bytePos = writeByte(8, bytePos); // bit depth - bytePos = writeByte((encodeAlpha) - ? 6 - : 2, bytePos); // direct model - bytePos = writeByte(0, bytePos); // compression method - bytePos = writeByte(0, bytePos); // filter method - bytePos = writeByte(0, bytePos); // no interlace - crc.reset(); - crc.update(pngBytes, startPos, bytePos - startPos); - crcValue = crc.getValue(); - bytePos = writeInt4((int) crcValue, bytePos); - } - - /** - * Perform "sub" filtering on the given row. - * Uses temporary array leftBytes to store the original values - * of the previous pixels. The array is 16 bytes long, which - * will easily hold two-byte samples plus two-byte alpha. - * - * @param pixels The array holding the scan lines being built - * @param startPos Starting position within pixels of bytes to be filtered. - * @param width Width of a scanline in pixels. - */ - protected void filterSub(byte[] pixels, int startPos, int width) { - - int i; - int offset = bytesPerPixel; - int actualStart = startPos + offset; - int nBytes = width * bytesPerPixel; - int leftInsert = offset; - int leftExtract = 0; - //byte current_byte; - - for (i = actualStart; i < startPos + nBytes; i++) { - leftBytes[leftInsert] = pixels[i]; - pixels[i] = (byte) ((pixels[i] - leftBytes[leftExtract]) % 256); - leftInsert = (leftInsert + 1) % 0x0f; - leftExtract = (leftExtract + 1) % 0x0f; - } - } - - /** - * Perform "up" filtering on the given row. - * Side effect: refills the prior row with current row - * - * @param pixels The array holding the scan lines being built - * @param startPos Starting position within pixels of bytes to be filtered. - * @param width Width of a scanline in pixels. - */ - protected void filterUp(byte[] pixels, int startPos, int width) { - - int i, nBytes; - byte current_byte; - - nBytes = width * bytesPerPixel; - - for (i = 0; i < nBytes; i++) { - current_byte = pixels[startPos + i]; - pixels[startPos + i] = (byte) ((pixels[startPos + i] - priorRow[i]) - % 256); - priorRow[i] = current_byte; - } - } - - /** - * Write the image data into the pngBytes array. - * This will write one or more PNG "IDAT" chunks. In order - * to conserve memory, this method grabs as many rows as will - * fit into 32K bytes, or the whole image; whichever is less. - * - * - * @return true if no errors; false if error grabbing pixels - */ - protected boolean writeImageData() { - - int rowsLeft = height; // number of rows remaining to write - int startRow = 0; // starting row to process this time through - int nRows; // how many rows to grab at a time - - byte[] scanLines; // the scan lines to be compressed - int scanPos; // where we are in the scan lines - int startPos; // where this line's actual pixels start (used for filtering) - - byte[] compressedLines; // the resultant compressed lines - int nCompressed; // how big is the compressed area? - - //int depth; // color depth ( handle only 8 or 32 ) - - PixelGrabber pg; - - bytesPerPixel = (encodeAlpha) - ? 4 - : 3; - - Deflater scrunch = new Deflater(compressionLevel); - ByteArrayOutputStream outBytes = new ByteArrayOutputStream(1024); - - DeflaterOutputStream compBytes = new DeflaterOutputStream(outBytes, - scrunch); - try { - while (rowsLeft > 0) { - nRows = Math.min(32767 / (width * (bytesPerPixel + 1)), rowsLeft); - - // nRows = rowsLeft; - - int[] pixels = new int[width * nRows]; - - pg = new PixelGrabber(image, 0, startRow, width, nRows, pixels, 0, - width); - try { - pg.grabPixels(); - } catch (Exception e) { - System.err.println("interrupted waiting for pixels!"); - return false; - } - if ((pg.getStatus() & ImageObserver.ABORT) != 0) { - System.err.println("image fetch aborted or errored"); - return false; - } - - /* - * Create a data chunk. scanLines adds "nRows" for - * the filter bytes. - */ - scanLines = new byte[width * nRows * bytesPerPixel + nRows]; - - if (filter == FILTER_SUB) { - leftBytes = new byte[16]; - } - if (filter == FILTER_UP) { - priorRow = new byte[width * bytesPerPixel]; - } - - scanPos = 0; - startPos = 1; - for (int i = 0; i < width * nRows; i++) { - if (i % width == 0) { - scanLines[scanPos++] = (byte) filter; - startPos = scanPos; - } - scanLines[scanPos++] = (byte) ((pixels[i] >> 16) & 0xff); - scanLines[scanPos++] = (byte) ((pixels[i] >> 8) & 0xff); - scanLines[scanPos++] = (byte) ((pixels[i]) & 0xff); - if (encodeAlpha) { - scanLines[scanPos++] = (byte) ((pixels[i] >> 24) & 0xff); - } - if ((i % width == width - 1) && (filter != FILTER_NONE)) { - if (filter == FILTER_SUB) { - filterSub(scanLines, startPos, width); - } - if (filter == FILTER_UP) { - filterUp(scanLines, startPos, width); - } - } - } - - /* - * Write these lines to the output area - */ - compBytes.write(scanLines, 0, scanPos); - - - startRow += nRows; - rowsLeft -= nRows; - } - compBytes.close(); - - /* - * Write the compressed bytes - */ - compressedLines = outBytes.toByteArray(); - nCompressed = compressedLines.length; - - crc.reset(); - bytePos = writeInt4(nCompressed, bytePos); - bytePos = writeString("IDAT", bytePos); - crc.update("IDAT".getBytes()); - bytePos = writeBytes(compressedLines, nCompressed, bytePos); - crc.update(compressedLines, 0, nCompressed); - - crcValue = crc.getValue(); - bytePos = writeInt4((int) crcValue, bytePos); - scrunch.finish(); - return true; - } catch (IOException e) { - System.err.println(e.toString()); - return false; - } - } - - /** - * Write a PNG "IEND" chunk into the pngBytes array. - */ - protected void writeEnd() { - - bytePos = writeInt4(0, bytePos); - bytePos = writeString("IEND", bytePos); - crc.reset(); - crc.update("IEND".getBytes()); - crcValue = crc.getValue(); - bytePos = writeInt4((int) crcValue, bytePos); - } -} - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2009-09-09 19:22:53
|
Revision: 11521 http://jmol.svn.sourceforge.net/jmol/?rev=11521&view=rev Author: hansonr Date: 2009-09-09 19:22:44 +0000 (Wed, 09 Sep 2009) Log Message: ----------- ASimpleJvxlWriter build Added Paths: ----------- trunk/Jmol/build-ASimpleJvxlWriter.xml trunk/Jmol/manifest/jvxls.txt Added: trunk/Jmol/build-ASimpleJvxlWriter.xml =================================================================== --- trunk/Jmol/build-ASimpleJvxlWriter.xml (rev 0) +++ trunk/Jmol/build-ASimpleJvxlWriter.xml 2009-09-09 19:22:44 UTC (rev 11521) @@ -0,0 +1,1303 @@ +<project name="Jmol" default="main" basedir="."> + <!-- + DocumentId $Id: build.xml 11410 2009-08-31 04:21:46Z hansonr $ + --> + + <!-- pull developer-specific settings from their home directory --> + <property file="${user.home}/.jmol.build.properties" /> + <!-- compile options --> + <property name="build.sysclasspath" value="ignore" /> + <property name="build.compiler" value="javac1.4" /> + <!-- for some reason, I can't get ant to use this ${java.version} + property as the value of the source parameter --> + <property name="java.version" value="1.4" /> + <property name="debug" value="on" /> + <property name="deprecation" value="off" /> + <property name="optimization" value="off" /> + + <property file="src/org/jmol/viewer/Jmol.properties" prefix="Jmol.properties" /> + <property name="version" value="${Jmol.properties.version}" /> + <property name="jvxl_version" value="0.1" /> + + <property name="tests.source.dir" value="source-tests" /> + <property name="lib.dir" value="jars" /> + <property name="plugin.dir" value="plugin-jars" /> + <property name="appjars.dir" value="build/appjars" /> + <property name="classes.dir" value="build/classes" /> + <property name="test-classes.dir" value="build/test-classes" /> + <property name="appletjars.dir" value="build/appletjars" /> + <property name="applet.classes.dir" value="build/applet-classes" /> + <property name="apisio.classes.dir" value="build/apisio-classes" /> + <property name="tests.dir" value="build/unit.tests" /> + <property name="javadoc.dir" value="build/javadoc" /> + <property name="jmol.applet.build.dir" value="build" /> + <property name="jmol.build.dir" value="build" /> + <property name="docbook-xsl" value="docbook-xsl-1.74.0" /> + <property name="docbook-xml" value="docbook-xml-4.4" /> + <property name="vecmath.jar" value="vecmath1.2-1.14.jar" /> + <property name="itext.jar" value="itext-1.4.5.jar" /> + <property name="commons-cli.jar" value="commons-cli-1.0.jar" /> + + <!-- you can set this by defining it in ~/.jmol.build.properties --> + <property name="keystore.name" value="Must be set by user." /> + + <property file="proxy.properties" /> + + <import file="build-i18n.xml"/> + + <path id="project.class.path"> + <fileset dir="${lib.dir}"> + <include name="*.jar" /> + </fileset> + </path> + + <path id="applet-project.class.path"> + <fileset dir="${lib.dir}"> + <include name="*.jar" /> + </fileset> + </path> + + <path id="apisio-project.class.path"> + <fileset dir="${lib.dir}"> + <include name="${vecmath.jar}" /> + <include name="netscape.jar" /> + <include name="gnujaxp.jar" /> + </fileset> + </path> + + <!-- <for list ...> construct needs ant-contrib.jar --> + <taskdef resource="net/sf/antcontrib/antlib.xml"> + <classpath> + <pathelement location="${lib.dir}/ant-contrib.jar"/> + </classpath> + </taskdef> + + <target name="main" id="main" depends="init,jar,applet-jar"/> + + <target name="all" id="all" depends="doc,main"/> + + <target name="init" id="init"> + <tstamp/> + </target> + + <target name="initFailure" id="initFailure"> + <fail message="Init failed. See messages above." /> + </target> + + <target name="setup" id="setup"> + <condition property="docbook-xsl.uptodate"> + <and> + <uptodate targetfile="build/${docbook-xsl}" + srcfile="doc/${docbook-xsl}.tar.gz" /> + <uptodate targetfile="build/${docbook-xsl}.timestamp" + srcfile="build/${docbook-xsl}" /> + </and> + </condition> + + <condition property="docbook-xml.uptodate"> + <and> + <uptodate targetfile="build/docbook-xml" + srcfile="doc/${docbook-xml}.zip" /> + <uptodate targetfile="build/docbook-xml.timestamp" + srcfile="build/docbook-xml" /> + </and> + </condition> + + <condition property="jmolGuide.uptodate"> + <and> + <uptodate targetfile="build/doc/JmolUserGuide/index.html"> + <srcfiles dir="doc/source" + includes="JmolGuide.docbook.xml, guide/*.docbook.xml"/> + </uptodate> + <uptodate targetfile="build/doc/JmolUserGuide_fr/index.html"> + <srcfiles dir="doc/source" + includes="JmolGuide_fr.docbook.xml, guide/*_fr.docbook.xml"/> + </uptodate> + </and> + </condition> + + <condition property="jmolHistory.uptodate"> + <and> + <uptodate targetfile="build/doc/JmolHistory/ChangeLog.html"> + <srcfiles dir="doc/source" + includes="JmolHistory.xml,JmolHistoryToHtml.xsl,history/changes.xml" /> + </uptodate> + <uptodate targetfile="build/doc/JmolHistory/ChangeLog_fr.html"> + <srcfiles dir="doc/source" + includes="JmolHistory_fr.xml,JmolHistoryToHtml.xsl,history/changes_fr.xml" /> + </uptodate> + <uptodate targetfile="build/doc/JmolHistory/ChangeLog_nl.html"> + <srcfiles dir="doc/source" + includes="JmolHistory_nl.xml,JmolHistoryToHtml.xsl,history/changes_nl.xml" /> + </uptodate> + </and> + </condition> + + <condition property="jmolDevelopersGuide.uptodate"> + <and> + <uptodate targetfile="build/doc/JmolDevelopersGuide.html"> + <srcfiles dir="doc/source" + includes="JmolDevelopersGuide.docbook.xml"/> + </uptodate> + <uptodate targetfile="build/doc/JmolDevelopersGuide_fr.html"> + <srcfiles dir="doc/source" + includes="JmolDevelopersGuide_fr.docbook.xml"/> + </uptodate> + <uptodate targetfile="build/doc/JmolDevelopersGuide_de.html"> + <srcfiles dir="doc/source" + includes="JmolDevelopersGuide_de.docbook.xml"/> + </uptodate> + </and> + </condition> + + <condition property="jmolAppletGuide.uptodate"> + <and> + <uptodate targetfile="build/doc/JmolAppletGuide.html"> + <srcfiles dir="doc/source" + includes="JmolAppletGuide.docbook.xml, applet/*.docbook.xml"/> + </uptodate> + <uptodate targetfile="build/doc/JmolAppletGuide_fr.html"> + <srcfiles dir="doc/source" + includes="JmolAppletGuide_fr.docbook.xml, applet/*_fr.docbook.xml"/> + </uptodate> + <uptodate targetfile="build/doc/JmolAppletGuide_de.html"> + <srcfiles dir="doc/source" + includes="JmolAppletGuide_de.docbook.xml"/> + </uptodate> + </and> + </condition> + + <available classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" + property="xsl.available"/> + <uptodate property="javadoc.uptodate" targetfile="${javadoc.dir}/index.html"> + <srcfiles dir="src" includes="**/*.java, **/*.html" /> + </uptodate> + <available file="${keystore.name}" property="keystore.present" /> + <!-- Optional proxy settings (if defined) --> + <condition property="proxyHost" + value="-Dhttp.proxyHost=${http.proxyHost}" > + <not> + <equals arg1="http.proxyHost" arg2="" /> + </not> + </condition> + <condition property="proxyPort" + value="-Dhttp.proxyPort=${http.proxyPort}" > + <not> + <equals arg1="http.proxyPort" arg2="" /> + </not> + </condition> + </target> + + <target id="classes" name="classes" depends="init"> + <mkdir dir="${classes.dir}"/> + <javac srcdir="src" destdir="${classes.dir}" + debug="${debug}" deprecation="${deprecation}" + optimize="${optimization}" source="1.4"> + <classpath refid="project.class.path" /> + <!-- removed all CDK based code, use BioClipse instead --> + <exclude name="org/openscience/jmol/app/JmolEditBus.java"/> + <exclude name="org/openscience/jmol/io/ShelXReader.java"/> + <exclude name="org/jmol/adapter/cdk/CdkJmolAdapter.java"/> + </javac> + <copy todir="${classes.dir}" > + <fileset dir="src"> + <include name="**/*.jpg" /> + <include name="**/*.gif" /> + <include name="**/*.png" /> + <include name="**/*.html" /> + <include name="**/*.js" /> + <include name="**/*.dtd" /> + <include name="**/*.properties" /> + <include name="**/Properties/*" /> + <!-- for testing internationalisation only: + comment out the 2 lines above and uncomment the following 3 lines --> + <!-- + <include name="**/JmolPop*.properties" /> + <include name="**/Properties/Jmol.properties" /> + <include name="**/Properties/Jmol-resources.properties" /> + --> + <include name="**/Data/*" /> + <include name="**/*.txt" /> + </fileset> + </copy> + </target> + + <target name="applet-classes" id="applet-classes" depends="init"> + <mkdir dir="${applet.classes.dir}"/> + + <property name="build.compiler" value="javac1.1" /> + <!-- mth 20040713 ... with the Sun Java 1.5 compiler the default + source code version is 1.5. And one cannot generate code for + a 1.1 virtual machine from 1.5 source. Therefore, in order to + compile for the 1.1 jvm, we need to specify that the source + version is 1.3. (Note that we cannot use source=1.4 because + of assertions) + +miguel 20041121 +I do not know recall exactly what I meant by the statement +in (parentheses) above. I *think* that what I was saying +is that if you say 'source=1.4' then one also cannot +generate code for a 1.1 jvm, because of the special +support for assertions (which were introduced in 1.4). + --> + <javac srcdir="src" destdir="${applet.classes.dir}" + debug="${debug}" deprecation="${deprecation}" + optimize="${optimization}" + source="1.3" target="1.1" + includesfile="applet.classes" + classpathref="applet-project.class.path" /> + + <copy todir="${applet.classes.dir}" > + <fileset dir="src"> + <include name="org/jmol/minimize/forcefield/*.txt" /> + <include name="jmol75x29x8.gif" /> + </fileset> + </copy> + <copy todir="${applet.classes.dir}" > + <fileset dir="src"> + <include name="org/jmol/viewer/Jmol.properties" /> + </fileset> + <filterchain> + <striplinecomments> + <comment value="#" /> + </striplinecomments> + <linecontains> + <contains value="=" /> + </linecontains> + </filterchain> + </copy> + <copy todir="${applet.classes.dir}" > + <fileset dir="${classes.dir}"> + <include name="**/JmolApplet/*/*.class" /> + </fileset> + </copy> + </target> + + <target name="apisio-classes" id="apisio-classes" depends="init"> + <mkdir dir="${apisio.classes.dir}"/> + <javac srcdir="src" destdir="${apisio.classes.dir}" + debug="${debug}" deprecation="${deprecation}" + optimize="${optimization}" source="1.4" + includesfile="apisio.classes" + classpathref="apisio-project.class.path" /> + <copy todir="${apisio.classes.dir}" > + <fileset dir="src"> + <include name="**/g3d/*.html" /> + </fileset> + </copy> + </target> + + <target name="check.cdkjars" id="check.cdkjars"> + <condition property="cdkjars.uptodate"> + <and> + <uptodate targetfile="${appjars.dir}/org/openscience/cdk"> + <srcfiles dir="${lib.dir}" includes="jmol2cdk.jar"/> + </uptodate> + <uptodate targetfile="build/cdkjars.timestamp" + srcfile="${appjars.dir}/org/openscience/cdk"/> + </and> + </condition> + </target> + + <target name="check.pluginjars" id="check.pluginjars"> + <condition property="pluginjars.uptodate"> + <and> + <uptodate targetfile="${appjars.dir}/org/openscience/cdkplugin"> + <srcfiles dir="${plugin.dir}" includes="dirbrowser.jar"/> + <srcfiles dir="${plugin.dir}" includes="dadmlbrowser.jar"/> + </uptodate> + <uptodate targetfile="build/pluginjars.timestamp" + srcfile="${appjars.dir}/org/openscience/cdkplugin"/> + </and> + </condition> + </target> + + <target name="check.libjars" id="check.libjars"> + <condition property="libjars.uptodate"> + <and> + <uptodate targetfile="${appjars.dir}"> + <srcfiles dir="${lib.dir}" includes="${vecmath.jar}"/> + <!-- srcfiles dir="${lib.dir}" includes="Acme.jar"/ --> + <srcfiles dir="${lib.dir}" includes="${itext.jar}"/> + <srcfiles dir="${lib.dir}" includes="${commons-cli.jar}"/> + </uptodate> + <uptodate targetfile="build/libjars.timestamp" + srcfile="${appjars.dir}"/> + </and> + </condition> + </target> + + <!-- target name="appjars" id="appjars" depends="libjars, cdkjars, pluginjars"/> + + <target name="cdkjars" id="cdkjars" depends="check.cdkjars" unless="cdkjars.uptodate"> + <delete file="build/cdkjars.timestamp"/> + <mkdir dir="${appjars.dir}"/> + <unjar dest="${appjars.dir}" src="${lib.dir}/jmol2cdk.jar"/> + <touch file="build/cdkjars.timestamp"/> + </target> + + <target name="pluginjars" id="pluginjars" depends="check.pluginjars" unless="pluginjars.uptodate"> + <delete file="build/pluginjars.timestamp"/> + <mkdir dir="${appjars.dir}"/> + <unjar dest="${appjars.dir}" src="${plugin.dir}/dirbrowser.jar"/> + <unjar dest="${appjars.dir}" src="${plugin.dir}/dadmlbrowser.jar"/> + <touch file="build/pluginjars.timestamp"/> + </target --> + + <target name="libjars" id="libjars" depends="check.libjars" unless="libjars.uptodate"> + <delete file="build/libjars.timestamp"/> + <mkdir dir="${appjars.dir}"/> + <unjar dest="${appjars.dir}" src="${lib.dir}/${vecmath.jar}"/> + <!-- unjar dest="${appjars.dir}" src="${lib.dir}/Acme.jar"/ --> + <unjar dest="${appjars.dir}" src="${lib.dir}/${itext.jar}"/> + <unjar dest="${appjars.dir}" src="${lib.dir}/${commons-cli.jar}"/> + <touch file="build/libjars.timestamp"/> + </target> + + <target name="jar" id="jar" + depends="init,classes,jmolGuide,jmolHistory,jmolDevelopersGuide,libjars,main-i18n"> + <copy todir="${classes.dir}/org/openscience/jmol/Data/guide" > + <fileset dir="build/doc/JmolUserGuide"> + <include name="**/*.html" /> + </fileset> + </copy> + <copy todir="${classes.dir}/org/openscience/jmol/Data/guide_fr" > + <fileset dir="build/doc/JmolUserGuide_fr"> + <include name="**/*.html" /> + </fileset> + </copy> + <copy todir="${classes.dir}/org/openscience/jmol/Data" > + <fileset dir="build/doc/JmolHistory"> + <include name="**/*.html" /> + </fileset> + </copy> + <jar destfile="${jmol.build.dir}/JmolUnsigned.jar" + manifest="manifest/application.txt"> + <fileset dir="${classes.dir}" > + <exclude name="**/.*" /> + <exclude name="**/*.dx" /> + <exclude name="ant/**" /> + <include name="com/**" /> + <exclude name="**/Test*.class" /> + <exclude name="**/jmol/jcamp/**" /> + <exclude name="**/jmol/applet/*" /> + <exclude name="**/jmol/appletwrapper/*" /> + <include name="**/jmol/**" /> + <exclude name="**/app/JmolData.class" /> + </fileset> + <fileset dir="${appjars.dir}" includes="**/*"/> + <fileset dir="src/org/jmol/translation/Jmol" includes="Messages*.class"/> + </jar> + <signjar jar="${jmol.build.dir}/JmolUnsigned.jar" + signedjar="${jmol.build.dir}/Jmol.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <!-- to verify that a .jar file is signed: jarsigner -verify foo.jar --> + <delete file="${jmol.build.dir}/JmolUnsigned.jar"/> + <jar destfile="${jmol.build.dir}/JmolUnsignedF.jar" + manifest="manifest/applicationData.txt"> + <fileset dir="${classes.dir}" > + <exclude name="**/.*" /> + <exclude name="**/*.dx" /> + <exclude name="**/Test*.class" /> + <exclude name="ant/**" /> + <exclude name="com/**" /> + <include name="**/jmol/**" /> + <exclude name="**/jmol/_documents/**" /> + <exclude name="**/jmol/jcamp/**" /> + <exclude name="**/jmol/applet/**" /> + <exclude name="**/jmol/appletwrapper/**" /> + <exclude name="**/jmol/console/**" /> + <exclude name="**/jmol/export/**" /> + <exclude name="**/jmol/shapebio/**" /> + <exclude name="**/jmol/shapespecial/**" /> + <exclude name="**/jmol/shapesurface/**" /> + <exclude name="**/jmol/popup/**" /> + <exclude name="**/openscience/jmol/Data/**" /> + <exclude name="**/openscience/jmol/app/Jmol.class" /> + <exclude name="**/openscience/jmol/app/images/**" /> + <exclude name="**/openscience/jmol/app/jmolpanel/**" /> + <exclude name="**/openscience/jmol/app/webexport/**" /> + </fileset> + <fileset dir="${appjars.dir}" includes="**/cli/** **/vecmath/**" /> + <fileset dir="src/org/jmol/translation/Jmol" includes="Messages*.class"/> + </jar> + <signjar jar="${jmol.build.dir}/JmolUnsignedF.jar" + signedjar="${jmol.build.dir}/JmolData.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <!-- to verify that a .jar file is signed: jarsigner -verify foo.jar --> + <delete file="${jmol.build.dir}/JmolUnsignedF.jar"/> + <copy todir="${jmol.build.dir}"> + <fileset dir="."> + <include name="jmol" /> + <include name="jmol.bat" /> + <include name="jmol.sh" /> + </fileset> + </copy> + + <jar destfile="${jmol.build.dir}/JvxlUnsigned.jar" + manifest="manifest/jvxl.txt"> + <fileset dir="${classes.dir}" > + <exclude name="**/.*" /> + <exclude name="**/*.dx" /> + <exclude name="**/Test*.class" /> + <include name="org/openscience/jvxl/**" /> + <include name="org/jmol/jvxl/**" /> + <include name="org/jmol/util/**" /> + <include name="org/jmol/g3d/**" /> + <include name="org/jmol/api/**" /> + <include name="org/jmol/atomdata/**" /> + <include name="org/jmol/quantum/**" /> + <include name="org/jmol/viewer/JmolConstants.class" /> + </fileset> + <fileset dir="${appjars.dir}" includes="**/*"/> + </jar> + <signjar jar="${jmol.build.dir}/JvxlUnsigned.jar" + signedjar="${jmol.build.dir}/Jvxl.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <delete file="${jmol.build.dir}/JvxlUnsigned.jar"/> + + </target> + + <jar destfile="${jmol.build.dir}/JvxlSUnsigned.jar" + manifest="manifest/jvxls.txt"> + <fileset dir="${classes.dir}" > + <exclude name="**/.*" /> + <exclude name="**/*.dx" /> + <exclude name="**/Test*.class" /> + <include name="org/openscience/jvxl/**" /> + <include name="org/jmol/jvxl/**" /> + <include name="org/jmol/util/**" /> + <include name="org/jmol/g3d/**" /> + <include name="org/jmol/api/**" /> + <include name="org/jmol/atomdata/**" /> + <include name="org/jmol/quantum/**" /> + <include name="org/jmol/viewer/JmolConstants.class" /> + </fileset> + <fileset dir="${appjars.dir}" includes="**/*"/> + </jar> + <signjar jar="${jmol.build.dir}/JvxlSUnsigned.jar" + signedjar="${jmol.build.dir}/ASimpleJvxlWriter.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <delete file="${jmol.build.dir}/JvxlSUnsigned.jar"/> + + <target name="apis-jar" id="apis-jar" depends="init,apisio-classes"> + <jar destfile="jmolApis.jar"> + <fileset dir="${apisio.classes.dir}" > + <include name="org/jmol/api/**" /> + </fileset> + <fileset dir="." > + <include name="LICENSE.txt"/> + </fileset> + </jar> + </target> + + <target name="io-jar" id="io-jar" depends="init,apisio-classes"> + <jar destfile="jmolIO.jar"> + <fileset dir="${apisio.classes.dir}" > + <include name="org/jmol/adapter/smarter/**" /> + </fileset> + <fileset dir="." > + <include name="LICENSE.txt"/> + </fileset> + </jar> + </target> + + <target name="check.appletjars" id="check.appletjars"> + <condition property="appletjars.uptodate"> + <and> + <uptodate targetfile="${appletjars.dir}"> + <srcfiles dir="${lib.dir}" + includes="jmolappletcdk.jar,${vecmath.jar}"/> + </uptodate> + <uptodate targetfile="build/appletjars.timestamp" + srcfile="${appletjars.dir}"/> + </and> + </condition> + </target> + + <target name="appletjars" id="appletjars" depends="check.appletjars" + unless="appletjars.uptodate"> + <delete file="build/appletjars.timestamp"/> + <delete dir="${appletjars.dir}"/> + <mkdir dir="${appletjars.dir}"/> + + <copy todir="${appletjars.dir}" > + <fileset dir="src"> + <include name="com/obrador/license.txt" /> + </fileset> + </copy> + + <unjar dest="${appletjars.dir}" src="${lib.dir}/${vecmath.jar}"> + <patternset> + <include name="**/Point3f.class"/> + <include name="**/Vector3f.class"/> + <include name="**/Matrix3f.class"/> + <include name="**/Matrix4f.class"/> + <include name="**/AxisAngle4f.class"/> + <include name="**/Quat4f.class"/> + <include name="**/Point3i.class"/> + <!-- the following are dependencies of the classes above --> + <include name="**/Tuple3i.class"/> + <include name="**/Tuple3f.class"/> + <include name="**/Tuple4f.class"/> + <include name="**/Vector4f.class"/> + <include name="**/Tuple3d.class"/> + <include name="**/Tuple4d.class"/> + <include name="**/Vector3d.class"/> + <include name="**/Quat4d.class"/> + <include name="**/Point4f.class"/> + <include name="**/Point3d.class"/> + <include name="**/Point4d.class"/> + <include name="**/Tuple2d.class"/> + <include name="**/Point2d.class"/> + <include name="**/Matrix3d.class"/> + <include name="**/Matrix4d.class"/> + <include name="**/AxisAngle4d.class"/> + <include name="**/SingularMatrixException.class"/> + </patternset> + </unjar> + <touch file="build/appletjars.timestamp"/> + </target> + + <target name="applet-jar" id="applet-jar" + depends="applet-classes,appletjars"> + <jar destfile="${jmol.applet.build.dir}/JmolApplet.jar" + manifest="manifest/appletMonolithic.txt" index="true" > + <fileset dir="${applet.classes.dir}" > + <include name="**/*" /> + <exclude name="org/jmol/export/**/*" /> + </fileset> + <fileset dir="${appletjars.dir}" includes="**/*"/> + </jar> + + <for list="${all.JmolApplet.languages}" delimiter="," + param="current.Jmol.language"> + <sequential> + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_i18n_@{current.Jmol.language}.jar" + manifest="manifest/applet_i18n.txt" > + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/translation/JmolApplet/@{current.Jmol.language}/**" /> + </fileset> + </jar> + </sequential> + </for> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/minimize/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Console.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/console/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/popup/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Quantum.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/quantum/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/adapter/readers/molxyz/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ReadersCifPdb.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/adapter/readers/cifpdb/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ReadersMore.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/adapter/readers/more/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ReadersXml.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/adapter/readers/xml/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ShapeBio.jar" manifest="manifest/applet.txt" > + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/modelsetbio/**" /> + <include name="org/jmol/shapebio/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ShapeSpecial.jar" manifest="manifest/applet.txt" > + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/shapespecial/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ShapeSurface.jar" manifest="manifest/applet.txt" > + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/jvxl/**" /> + <include name="org/jmol/shapesurface/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Smiles.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/smiles/**" /> + </fileset> + </jar> + + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Symmetry.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/symmetry/**" /> + </fileset> + </jar> + + + <!-- vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv --> + <!-- changes to this must be replicated below for the signed applet --> + <jar destfile="${jmol.applet.build.dir}/JmolApplet0.jar" + index="true" > + <!-- javax/vecmath --> + <fileset dir="${appletjars.dir}" includes="**/*"/> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/appletwrapper/*" /> + <include name="JmolApplet*.class" /> + <include name="jmol75x29x8.gif" /> + <include name="org/jmol/adapter/smarter/**" /> + <include name="org/jmol/api/**" /> + <include name="org/jmol/applet/**" /> + <include name="org/jmol/atomdata/**" /> + <include name="org/jmol/bspt/**" /> + <include name="org/jmol/g3d/**" /> + <include name="org/jmol/geodesic/**" /> + <include name="org/jmol/i18n/**" /> + <include name="org/jmol/modelset/**" /> + <include name="org/jmol/script/**" /> + <include name="org/jmol/shape/**" /> + <include name="org/jmol/util/**" /> + <include name="org/jmol/viewer/**" /> + </fileset> + + <!-- changes to this must be replicated below for the signed applet --> + <indexjars> + <!-- no export here - this is the unsigned applet --> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Console.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Quantum.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersCifPdb.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersMore.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersXml.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ShapeBio.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ShapeSpecial.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ShapeSurface.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Smiles.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Symmetry.jar" /> + <fileset dir="${jmol.applet.build.dir}" includes="JmolApplet0_i18n_*.jar" /> + </indexjars> + </jar> + <!-- changes to this must be replicated below for the signed applet --> + <!-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --> + + </target> + + <target name="signed-applet" id="signed-applet" depends="applet-jar"> + <jar destfile="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" + manifest="manifest/appletMonolithic.txt" index="true" > + <fileset dir="${applet.classes.dir}" > + <include name="**/*" /> + </fileset> + <fileset dir="${appletjars.dir}" includes="**/*"/> + </jar> + <signjar jar="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <delete file="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Console.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Console.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Minimize.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Popup.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Quantum.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Quantum.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_ReadersCifPdb.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersCifPdb.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersMolXyz.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_ReadersMore.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersMore.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_ReadersXml.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersXml.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_ShapeBio.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_ShapeBio.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_ShapeSpecial.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_ShapeSpecial.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_ShapeSurface.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_ShapeSurface.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Smiles.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Smiles.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Symmetry.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Symmetry.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + + <for list="${all.JmolApplet.languages}" delimiter="," + param="current.Jmol.language"> + <sequential> + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_i18n_@{current.Jmol.language}.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_i18n_@{current.Jmol.language}.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + </sequential> + </for> + + <!-- vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv --> + <!-- this one must be treated specially because of jar indexing + we cannot simply rename the jar file, because the index has + the old name (JmolApplet?.jar) inside it --> + <jar destfile="${jmol.applet.build.dir}/JmolAppletSigned0.jar" + manifest="manifest/applet0.txt" + index="true"> + <!-- javax/vecmath --> + <fileset dir="${appletjars.dir}" includes="**/*"/> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/appletwrapper/*" /> + <include name="JmolApplet*.class" /> + <include name="jmol75x29x8.gif" /> + <include name="org/jmol/adapter/smarter/**" /> + <include name="org/jmol/api/**" /> + <include name="org/jmol/applet/**" /> + <include name="org/jmol/atomdata/**" /> + <include name="org/jmol/bspt/**" /> + <include name="org/jmol/export/**" /> + <include name="org/jmol/g3d/**" /> + <include name="org/jmol/geodesic/**" /> + <include name="org/jmol/modelset/**" /> + <include name="org/jmol/script/**" /> + <include name="org/jmol/shape/**" /> + <include name="org/jmol/viewer/**" /> + <include name="org/jmol/util/**" /> + <include name="org/jmol/i18n/**" /> + </fileset> + <indexjars> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Console.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Minimize.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Popup.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Quantum.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersCifPdb.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersMolXyz.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersMore.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersXml.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ShapeBio.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ShapeSpecial.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ShapeSurface.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Smiles.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Symmetry.jar" /> + <fileset dir="${jmol.applet.build.dir}" includes="JmolAppletSigned0_i18n_*.jar" /> + </indexjars> + </jar> + <signjar jar="${jmol.applet.build.dir}/JmolAppletSigned0.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <!-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --> + </target> + + <target name="dist" id="dist" + depends="doc,main-i18n,main,signed-applet"> + <!-- first build binary distribution --> + <delete dir="build/dist/jmol-${version}"/> + <mkdir dir="build/dist/jmol-${version}"/> + <copy todir="build/dist/jmol-${version}" > + <fileset dir="${jmol.applet.build.dir}"> + <include name="JmolApplet*.jar" /> + </fileset> + <fileset dir="${jmol.build.dir}"> + <include name="Jmol.jar" /> + <include name="JmolData.jar" /> + </fileset> + <fileset dir="."> + <include name="jmol" /> + <include name="jmol.sh" /> + <include name="jmol.mac" /> + <include name="jmol.bat" /> + <include name="*.txt" /> + </fileset> + </copy> + <copy file="src/org/jmol/viewer/Jmol.properties" tofile="build/dist/jmol-${version}/CHANGES.txt" /> + <chmod perm="ugo+rx"> + <fileset dir="build/dist/jmol-${version}"> + <include name="jmol"/> + <include name="jmol.sh"/> + <include name="jmol.bat"/> + </fileset> + </chmod> + + <copy todir="build/dist/jmol-${version}" > + <fileset dir="./appletweb"> + <include name="Jmol.js" /> + </fileset> + </copy> + + <!-- + zip distributions to not retain file permissions ... + miguel 2 feb 2006 but there have been requests for them anyway --> + + <zip zipfile="build/dist/jmol-${version}-binary.zip" basedir="build/dist" + includes="jmol-${version}/**" /> + + <tar tarfile="build/dist/jmol-${version}-binary.tar.gz" + compression="gzip" > + <tarfileset dir="build/dist" + excludes="*/jmol,*/jmol.sh" + includes="jmol-${version}/**" /> + <tarfileset dir="build/dist" + mode="755" + includes="*/jmol,*/jmol.sh" /> + </tar> + + <!-- then build source distribution --> + + <copy todir="build/dist/jmol-${version}" > + <fileset dir="."> + <include name="applet.classes" /> + <include name="build.xml" /> + <include name="build-i18n.xml" /> + </fileset> + </copy> + + <copy todir="build/dist/jmol-${version}/src" > + <fileset dir="src" /> + </copy> + + <copy todir="build/dist/jmol-${version}/${lib.dir}" > + <fileset dir="${lib.dir}" /> + </copy> + + <copy todir="build/dist/jmol-${version}/${plugin.dir}" > + <fileset dir="${plugin.dir}" /> + </copy> + + <copy todir="build/dist/jmol-${version}/appletweb" > + <fileset dir="appletweb" /> + </copy> + + <copy todir="build/dist/jmol-${version}/manifest" > + <fileset dir="manifest" /> + </copy> + + <copy todir="build/dist/jmol-${version}/doc" > + <fileset dir="doc" /> + </copy> + + <!-- Jvxl --> + <copy file="build/Jvxl.jar" tofile="build/dist/Jvxl-${jvxl_version}.jar" failonerror="false" /> + + <copy file="build/doc/JmolDevelopersGuide.html" + tofile="build/dist/jmol-${version}/doc/JmolDevelopersGuide.html" /> + <copy file="build/doc/JmolHistory/ChangeLog.html" + tofile="build/dist/jmol-${version}/ChangeLog.html" /> + <copy todir="build/dist/jmol-${version}/doc/JmolUserGuide"> + <fileset dir="build/doc/JmolUserGuide"> + <include name="**/*.html" /> + </fileset> + </copy> + <copy file="build/doc/JmolAppletGuide.html" + tofile="build/dist/jmol-${version}/doc/JmolAppletGuide.html" /> + +<!-- + zip distributions to not retain file permissions + <zip zipfile="build/dist/jmol-${version}-full.zip" basedir="build/dist" + includes="jmol-${version}/**" /> + --> + + <tar tarfile="build/dist/jmol-${version}-full.tar.gz" + compression="gzip" > + <tarfileset dir="build/dist" + excludes="*/jmol,*/jmol.sh" + includes="jmol-${version}/**" /> + <tarfileset dir="build/dist" + mode="755" + includes="*/jmol,*/jmol.sh" /> + </tar> + </target> + + <target name="apisio-dist" id="apisio-dist" + depends="apis-jar,io-jar"> + <!-- first build binary distribution --> + <delete dir="build/dist/jmolapisio-${version}"/> + <mkdir dir="build/dist/jmolapisio-${version}"/> + <copy todir="build/dist/jmolapisio-${version}" > + <fileset dir="."> + <include name="jmolApis.jar" /> + <include name="jmolIO.jar" /> + <include name="*.txt" /> + </fileset> + </copy> + + <!-- build source distribution --> + + <copy todir="build/dist/jmolapisio-${version}" > + <fileset dir="."> + <include name="apisio.classes" /> + <include name="build.xml" /> + <include name="build-i18n.xml" /> + </fileset> + </copy> + + <copy todir="build/dist/jmolapisio-${version}/src" > + <fileset dir="src"> + <includesfile name="apisio.classes"/> + </fileset> + </copy> + + <copy todir="build/dist/jmolapisio-${version}/${lib.dir}" > + <fileset dir="${lib.dir}"> + <include name="${vecmath.jar}"/> + <include name="netscape.jar"/> + </fileset> + </copy> + + <tar tarfile="build/dist/jmolapisio-${version}.tar.gz" + compression="gzip" > + <tarfileset dir="build/dist" + excludes="*/jmol,*/jmol.sh" + includes="jmolapisio-${version}/**" /> + </tar> + </target> + + <target name="check.jws" id="check.jws" depends="setup" unless="keystore.present" > + <echo message="Keystore '${keystore.name}' not found." /> + <echo message="Please set with the argument '-Dkeystore.name=file'." /> + <antcall target="initFailure" /> + </target> + + <target name="dist-jws" id="dist-jws" depends="check.jws,dist" > + <copy todir="build/dist/jmol-jws-${version}" > + <fileset dir="src"> + <include name="jmol.jnlp" /> + </fileset> + </copy> + <mkdir dir="build/dist/jmol-jws-${version}/${lib.dir}" /> + <copy todir="build/dist/jmol-jws-${version}/${lib.dir}" > + <fileset dir="${lib.dir}"> + <include name="*.jar" /> + <exclude name="junit.jar" /> + <exclude name="saxon.jar" /> + </fileset> + </copy> + <mkdir dir="build/dist/jmol-jws-${version}/images" /> + <copy todir="build/dist/jmol-jws-${version}/images" flatten="yes" > + <fileset dir="src"> + <include name="**/icon.jpg" /> + </fileset> + </copy> + <ant antfile="../../../build.xml" dir="build/dist/jmol-jws-${version}" + target="internal-dist-jws-sign" /> + </target> + + <!-- + This target should be only used internally within the build.xml. It is a + workaround for a bugs in the fileset feature of the signjar task. See bugs + 5230 and 6988. + --> + <target name="internal-dist-jws-sign" id="internal-dist-jws-sign"> + <signjar alias="${keystore.alias}" + storepass="${keystore.password}" + keystore="${keystore.name}" > + <fileset dir="../jmol-jws-${version}"> + <include name="**/*.jar" /> + <exclude name="**/.AppleDouble/**" /> + </fileset> + </signjar> + </target> + + <target name="clean" id="clean"> + <delete dir="${classes.dir}"/> + <delete dir="${applet.classes.dir}"/> + <delete dir="${apisio.classes.dir}"/> + <delete dir="${test-classes.dir}"/> + <delete dir="${appjars.dir}"/> + <delete dir="${appletjars.dir}"/> + <delete dir="build/dist"/> + <delete> + <fileset dir="."> + <include name="Jmol.jar" /> + <include name="JmolData.jar" /> + <include name="JmolApplet*.jar" /> + <include name="${jmol.build.dir}/Jmol.jar" /> + <include name="${jmol.applet.build.dir}/JmolApplet*.jar" /> + <include name="${jmol.build.dir}/JmolData.jar" /> + </fileset> + </delete> + </target> + + <target name="xclean" id="xclean"> + </target> + + <target name="spotless" id="spotless" depends="clean,spotless-i18n"> + <delete dir="build"/> + <delete dir="${javadoc.dir}"/> + <delete dir="packaging/rpm/dist"/> + </target> + + <target name="run" id="run" depends="main"> + <java fork="true" jar="${jmol.build.dir}/Jmol.jar" /> + </target> + + <!-- ******************************** + Documentation Targets + ******************************** --> + <target name="doc" id="doc" + depends="jmolGuide,jmolDevelopersGuide,jmolAppletGuide,jmolHistory,javadoc"/> + + <target name="initdoc" depends="init,check.docbook-xml,check.docbook-xsl,check.xsl" /> + + <target name="check.docbook-xsl" depends="setup" unless="docbook-xsl.uptodate" > + <delete file="build/${docbook-xsl}.timestamp" /> + <delete dir="build/${docbook-xsl}" /> + <mkdir dir="build/${docbook-xsl}" /> + <untar src="doc/${docbook-xsl}.tar.gz" dest="build" + compression="gzip" /> + <touch file="build/${docbook-xsl}.timestamp" /> + </target> + + <target name="check.docbook-xml" depends="setup" unless="docbook-xml.uptodate" > + <delete file="build/docbook-xml.timestamp" /> + <delete dir="build/docbook-xml" /> + <mkdir dir="build/docbook-xml" /> + <unzip src="doc/${docbook-xml}.zip" dest="build/docbook-xml" /> + <touch file="build/docbook-xml.timestamp" /> + </target> + + <target name="check.xsl" depends="setup" unless="xsl.available" > + <echo message="XSLT class 'com.icl.saxon.StyleSheet' not found." /> + <echo message="Note that the documentation is NOT generated now." /> + </target> + + <target name="javadoc" depends="initdoc" unless="javadoc.uptodate"> + <mkdir dir="${javadoc.dir}"/> + <javadoc destdir="${javadoc.dir}" sourcepath="src" + private="true" + packagenames="org.openscience.*,org.jmol.*"> + <classpath refid="project.class.path" /> + <link href="http://java.sun.com/javase/6/docs/api/" /> + <link href="http://download.java.net/media/java3d/javadoc/1.5.0/" /> + </javadoc> + </target> + + <target name="jmolGuide" id="jmolGuide" depends="initdoc" + unless="jmolGuide.uptodate" > + <echo message="Generating user's guide" /> + <mkdir dir="build/doc/JmolUserGuide" /> + <java fork="true" dir="build/doc/JmolUserGuide" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <jvmarg value="${proxyHost}" /> + <jvmarg value="${proxyPort}" /> + <arg value="../../../doc/source/JmolGuide.docbook.xml" /> + <arg value="../../${docbook-xsl}/html/chunk.xsl" /> + </java> + <echo message="Generating user's guide (fr)" /> + <mkdir dir="build/doc/JmolUserGuide_fr" /> + <java fork="true" dir="build/doc/JmolUserGuide_fr" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <jvmarg value="${proxyHost}" /> + <jvmarg value="${proxyPort}" /> + <arg value="../../../doc/source/JmolGuide_fr.docbook.xml" /> + <arg value="../../${docbook-xsl}/html/chunk.xsl" /> + </java> + </target> + + <target name="jmolHistory" id="jmolHistory" + depends="initdoc" unless="jmolHistory.uptodate" > + <echo message="Generating history of changes" /> + <mkdir dir="build/doc/JmolHistory" /> + <java fork="true" dir="build/doc/JmolHistory" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="ChangeLog.html" /> + <arg value="../../../doc/source/JmolHistory.xml" /> + <arg value="../../../doc/source/JmolHistoryToHtml.xsl" /> + </java> + <echo message="Generating history of changes (fr)" /> + <java fork="true" dir="build/doc/JmolHistory" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="ChangeLog_fr.html" /> + <arg value="../../../doc/source/JmolHistory_fr.xml" /> + <arg value="../../../doc/source/JmolHistoryToHtml.xsl" /> + <arg value="lang=fr" /> + </java> + <echo message="Generating history of changes (nl)" /> + <java fork="true" dir="build/doc/JmolHistory" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="ChangeLog_nl.html" /> + <arg value="../../../doc/source/JmolHistory_nl.xml" /> + <arg value="../../../doc/source/JmolHistoryToHtml.xsl" /> + <arg value="lang=nl" /> + </java> + </target> + + <target name="jmolDevelopersGuide" id="jmolDevelopersGuide" + depends="initdoc" unless="jmolDevelopersGuide.uptodate" > + <echo message="Generating developer's guide" /> + <java fork="true" dir="build/doc" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="JmolDevelopersGuide.html" /> + <arg value="../../doc/source/JmolDevelopersGuide.docbook.xml" /> + <arg value="../${docbook-xsl}/html/docbook.xsl" /> + </java> + <echo message="Generating developer's guide (fr)" /> + <java fork="true" dir="build/doc" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="JmolDevelopersGuide_fr.html" /> + <arg value="../../doc/source/JmolDevelopersGuide_fr.docbook.xml" /> + <arg value="../${docbook-xsl}/html/docbook.xsl" /> + </java> + <echo message="Generating developer's guide (de)" /> + <java fork="true" dir="build/doc" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="JmolDevelopersGuide_de.html" /> + <arg value="../../doc/source/JmolDevelopersGuide_de.docbook.xml" /> + <arg value="../${docbook-xsl}/html/docbook.xsl" /> + </java> + </target> + + <target name="jmolAppletGuide" id="jmolAppletGuide" depends="initdoc" + unless="jmolAppletGuide.uptodate" > + <echo message="Generating applet guide" /> + <java fork="true" dir="build/doc" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="JmolAppletGuide.html" /> + <arg value="../../doc/source/JmolAppletGuide.docbook.xml" /> + <arg value="../${docbook-xsl}/html/docbook.xsl" /> + </java> + <echo message="Generating applet guide (fr)" /> + <java fork="true" dir="build/doc" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="JmolAppletGuide_fr.html" /> + <arg value="../../doc/source/JmolAppletGuide_fr.docbook.xml" /> + <arg value="../${docbook-xsl}/html/docbook.xsl" /> + </java> + <echo message="Generating applet guide (de)" /> + <java fork="true" dir="build/doc" + classname="com.icl.saxon.StyleSheet" + classpath="${lib.dir}/saxon.jar" > + <arg value="-o" /> + <arg value="JmolAppletGuide_de.html" /> + <arg value="../../doc/source/JmolAppletGuide_de.docbook.xml" /> + <arg value="../${docbook-xsl}/html/docbook.xsl" /> + </java> + </target> + + <target name="test" id="test" depends="main,compile-tests"> + <junit printsummary="yes" haltonfailure="yes"> + <classpath> + <pathelement location="${jmol.build.dir}/Jmol.jar" /> + <pathelement location="${tests.dir}/Tests.jar" /> + <pathelement location="./jars/junit.jar" /> + </classpath> + <formatter type="plain" usefile="false" /> + <!-- <batchtest> + <fileset dir="test" /> + </batchtest> --> + <test name="org.jmol.AllTests" /> + </junit> + </target> + + <target name="compile-tests" id="compile-tests" depends="main"> + <mkdir dir="${test-classes.dir}"/> + <javac srcdir="test" destdir="${test-classes.dir}" + debug="off" deprecation="on" + optimize="off" source="1.4"> + <classpath> + <pathelement location="${jmol.build.dir}/Jmol.jar" /> + <pathelement location="./jars/junit.jar" /> + </classpath> + </javac> + <mkdir dir="${tests.dir}"/> + <jar destfile="${tests.dir}/Tests.jar" basedir="${test-classes.dir}" /> + </target> + + <!-- i18n stuff --> + <target name="main-i18n" depends="classes"> + <ant antfile="build-i18n.xml" target="main-i18n"/> + </target> + <target name="spotless-i18n"> + <ant antfile="build-i18n.xml" target="spotless-i18n"/> + </target> + +</project> Property changes on: trunk/Jmol/build-ASimpleJvxlWriter.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/Jmol/manifest/jvxls.txt =================================================================== --- trunk/Jmol/manifest/jvxls.txt (rev 0) +++ trunk/Jmol/manifest/jvxls.txt 2009-09-09 19:22:44 UTC (rev 11521) @@ -0,0 +1 @@ +Main-Class: org.openscience.jvxl.simplewriter.ASimpleJvxlWriter Property changes on: trunk/Jmol/manifest/jvxls.txt ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ni...@us...> - 2009-11-23 19:45:38
|
Revision: 11790 http://jmol.svn.sourceforge.net/jmol/?rev=11790&view=rev Author: nicove Date: 2009-11-23 19:45:32 +0000 (Mon, 23 Nov 2009) Log Message: ----------- Docbook upgrade Modified Paths: -------------- trunk/Jmol/build.xml Added Paths: ----------- trunk/Jmol/doc/docbook-xsl-1.75.2.tar.gz Removed Paths: ------------- trunk/Jmol/doc/docbook-xsl-1.74.0.tar.gz Property Changed: ---------------- trunk/Jmol/doc/ Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2009-11-23 19:44:16 UTC (rev 11789) +++ trunk/Jmol/build.xml 2009-11-23 19:45:32 UTC (rev 11790) @@ -32,7 +32,7 @@ <property name="javadoc.dir" value="build/javadoc" /> <property name="jmol.applet.build.dir" value="build" /> <property name="jmol.build.dir" value="build" /> - <property name="docbook-xsl" value="docbook-xsl-1.74.0" /> + <property name="docbook-xsl" value="docbook-xsl-1.75.2" /> <property name="docbook-xml" value="docbook-xml-4.4" /> <property name="vecmath.jar" value="vecmath1.2-1.14.jar" /> <property name="itext.jar" value="itext-1.4.5.jar" /> Property changes on: trunk/Jmol/doc ___________________________________________________________________ Modified: svn:ignore - *html + *html Deleted: trunk/Jmol/doc/docbook-xsl-1.74.0.tar.gz =================================================================== (Binary files differ) Added: trunk/Jmol/doc/docbook-xsl-1.75.2.tar.gz =================================================================== (Binary files differ) Property changes on: trunk/Jmol/doc/docbook-xsl-1.75.2.tar.gz ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-15 00:58:51
|
Revision: 13579 http://jmol.svn.sourceforge.net/jmol/?rev=13579&view=rev Author: hansonr Date: 2010-07-15 00:58:45 +0000 (Thu, 15 Jul 2010) Log Message: ----------- version=12.0.RC25 # bug fix: %5.-5i overflow off by one digit in precision # new feature: SMILES /nostereo/ /noaromatic/, not just SMARTS # bug fix: TestSmiles incorrectly assigning bonds in ...[C@H]1... # bug fix: write PDB not correctly justifying atom names Modified Paths: -------------- trunk/Jmol/.settings/org.eclipse.jdt.core.prefs trunk/Jmol/.settings/org.eclipse.jdt.ui.prefs trunk/Jmol/src/org/jmol/modelset/LabelToken.java trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java trunk/Jmol/src/org/jmol/smiles/SmilesParser.java trunk/Jmol/src/org/jmol/smiles/SmilesSearch.java trunk/Jmol/src/org/jmol/smiles/package.html trunk/Jmol/src/org/jmol/util/TextFormat.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/test/org/jmol/smiles/TestSmilesParser.java Modified: trunk/Jmol/.settings/org.eclipse.jdt.core.prefs =================================================================== --- trunk/Jmol/.settings/org.eclipse.jdt.core.prefs 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/.settings/org.eclipse.jdt.core.prefs 2010-07-15 00:58:45 UTC (rev 13579) @@ -1,4 +1,4 @@ -#Thu Sep 14 22:04:07 CEST 2006 +#Thu Jun 10 20:41:00 CDT 2010 eclipse.preferences.version=1 org.eclipse.jdt.core.builder.cleanOutputFolder=clean org.eclipse.jdt.core.builder.duplicateResourceTask=warning @@ -70,6 +70,7 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 @@ -93,6 +94,7 @@ org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line @@ -106,9 +108,14 @@ org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=false org.eclipse.jdt.core.formatter.comment.format_comments=false org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=false org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=true @@ -119,16 +126,21 @@ org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.indentation.size=2 org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert @@ -136,6 +148,7 @@ org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert @@ -279,6 +292,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert @@ -294,16 +309,21 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.lineSplit=80 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=space org.eclipse.jdt.core.formatter.tabulation.size=2 org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true org.eclipse.jdt.core.incompatibleJDKLevel=ignore org.eclipse.jdt.core.incompleteClasspath=error Modified: trunk/Jmol/.settings/org.eclipse.jdt.ui.prefs =================================================================== --- trunk/Jmol/.settings/org.eclipse.jdt.ui.prefs 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/.settings/org.eclipse.jdt.ui.prefs 2010-07-15 00:58:45 UTC (rev 13579) @@ -1,5 +1,5 @@ -#Fri Dec 09 15:53:52 CET 2005 +#Thu Jun 10 20:40:59 CDT 2010 eclipse.preferences.version=1 -formatter_settings_version=8 +formatter_settings_version=11 internal.default.compliance=default org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return\r\n */</template><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param}\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/* $$RCSfile$$\r\n * $$Author$$\r\n * $$Date$$\r\n * $$Revision$$\r\n *\r\n * Copyright (C) 2005 The Jmol Development Team\r\n *\r\n * Contact\: jmo...@li...\r\n *\r\n * This library is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU Lesser General Public\r\n * License as published by the Free Software Foundation; either\r\n * version 2.1 of the License, or (at your option) any later version.\r\n *\r\n * This library is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r\n * Lesser General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU Lesser General Public\r\n * License along with this library; if not, write to the Free Software\r\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\r\n * 02110-1301, USA.\r\n */\r\n</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo}</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo}\r\n${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates> Modified: trunk/Jmol/src/org/jmol/modelset/LabelToken.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/LabelToken.java 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/src/org/jmol/modelset/LabelToken.java 2010-07-15 00:58:45 UTC (rev 13579) @@ -253,7 +253,6 @@ boolean isNegative = false; if (strFormat.charAt(ich) == '.') { ++ich; - lt.intAsFloat = true; if ((ch = strFormat.charAt(ich)) == '-') { isNegative = true; ++ich; @@ -503,7 +502,7 @@ return (label == null ? "" : label); } - public String format(float floatT, String strT, Tuple3f ptT) { + private String format(float floatT, String strT, Tuple3f ptT) { if (!Float.isNaN(floatT)) { return TextFormat.format(floatT, width, precision, alignLeft, zeroPad); } else if (strT != null) { Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2010-07-15 00:58:45 UTC (rev 13579) @@ -1159,7 +1159,13 @@ int iModel = atoms[0].modelIndex; int iModelLast = -1; boolean showModels = (iModel != atoms[atomCount - 1].modelIndex); - String s = null; + LabelToken[] t4x = null; + LabelToken[] t3x = null; + LabelToken[] t4h = null; + LabelToken[] t3h = null; + LabelToken[] t4a = null; + LabelToken[] t3a = null; + LabelToken[] tokens; for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { Atom a = atoms[i]; if (showModels && a.modelIndex != iModelLast) { @@ -1170,18 +1176,27 @@ } String sa = a.getAtomName(); boolean leftJustify = (a.getElementSymbol().length() == 2 - || sa.length() == 4 + || sa.length() >= 4 || Character.isDigit(sa.charAt(0))); if (!models[a.modelIndex].isPDB) - s = (leftJustify ? "HETATM%5i %-4a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n" - : "HETATM%5i %-4a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n"); + tokens = (leftJustify ? + (t4x == null ? LabelToken.compile(viewer, "HETATM%5.-5i %-4.4a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) + : t4x) + : (t3x == null ? LabelToken.compile(viewer, "HETATM%5.-5i %-3.3a%1AUNK %1c 1%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) + : t3x)); else if (a.isHetero()) - s = (leftJustify ? "HETATM%5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n" - : "HETATM%5i %-3a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n"); + tokens = (leftJustify ? + (t4h == null ? LabelToken.compile(viewer, "HETATM%5.-5i %-4.4a%1A%3.-3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) + : t4h) + : (t3h == null ? LabelToken.compile(viewer, "HETATM%5.-5i %-3.3a%1A%3.-3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) + : t3h)); else - s = (leftJustify ? "ATOM %5i %-4a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n" - : "ATOM %5i %-3a%1A%3.3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n"); - sb.append(LabelToken.formatLabel(viewer, a, s)); + tokens = (leftJustify ? + (t4a == null ? LabelToken.compile(viewer, "ATOM %5.-5i %-4.4a%1A%3.-3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) + : t4a) + : (t3a == null ? LabelToken.compile(viewer, "ATOM %5.-5i %-3.3a%1A%3.-3n %1c%4R%1E %8.3x%8.3y%8.3z%6.2Q%6.2b %2[symbol]\n", '\0', null) + : t3a)); + sb.append(LabelToken.formatLabel(viewer, a, null, tokens, '\0', null)); } if (showModels) sb.append("ENDMDL\n"); Modified: trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-15 00:58:45 UTC (rev 13579) @@ -1455,6 +1455,16 @@ case Token.min: case Token.max: return new Integer(ivMinMax); + case Token.sum2: + case Token.stddev: + break; + case Token.average: + if (sum/n == (int) (sum/n)) + return new Integer((int)(sum/n)); + case Token.sum: + default: + if (sum == (int) sum) + return new Integer((int)sum); } } switch (minmaxtype) { @@ -3521,6 +3531,7 @@ } break; case Token.atomindex: + try{ switch (tokOperator) { case Token.opLT: return BitSetUtil.newBitSet(0, comparisonValue); @@ -3540,6 +3551,9 @@ bs.clear(comparisonValue); return bs; } + } catch (Exception e) { + return new BitSet(); + } } bs = new BitSet(atomCount); for (int i = 0; i < atomCount; ++i) { Modified: trunk/Jmol/src/org/jmol/smiles/SmilesParser.java =================================================================== --- trunk/Jmol/src/org/jmol/smiles/SmilesParser.java 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/src/org/jmol/smiles/SmilesParser.java 2010-07-15 00:58:45 UTC (rev 13579) @@ -141,7 +141,7 @@ pattern = cleanPattern(pattern, isSmarts); boolean noAromatic = false; boolean ignoreStereochemistry = false; - while (isSmarts && pattern.startsWith("/")) { + while (pattern.startsWith("/")) { String flags = getSubPattern(pattern, 0, '/').toUpperCase(); pattern = pattern.substring(flags.length()); if (flags.indexOf("NOAROMATIC") >= 0) Modified: trunk/Jmol/src/org/jmol/smiles/SmilesSearch.java =================================================================== --- trunk/Jmol/src/org/jmol/smiles/SmilesSearch.java 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/src/org/jmol/smiles/SmilesSearch.java 2010-07-15 00:58:45 UTC (rev 13579) @@ -429,7 +429,7 @@ // The atom has passed both the atom and the bond test. // Add this atom to the growing list. - if (Logger.debugging && !isSilent) + if (true || Logger.debugging && !isSilent) Logger.debug("pattern atom " + atomNum + " " + patternAtom); bsFound.set(iAtom); Modified: trunk/Jmol/src/org/jmol/smiles/package.html =================================================================== --- trunk/Jmol/src/org/jmol/smiles/package.html 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/src/org/jmol/smiles/package.html 2010-07-15 00:58:45 UTC (rev 13579) @@ -466,6 +466,16 @@ <pre> # note: prior to parsing, all white space is removed + [smilesDef] == [preface] [smiles] + [preface] == { [flagDefs] | NULL } + [flagDefs] == { [flagDef] || [flagDef] [flagDefs] } + [flagDef] == "/" [processingFlags] "/" + [processingFlags] == { [processingFlag] | [processingFlag] [processingFlags] } + [processingFlag] == { "noAromatic" | "noStereo" } (case-insensitive) + # note: the noAromatic flag indicates to not distinguish between + # aromatic/aliphatic searches -- "C" and "c" + # note: the noStereo flag turns off all stereochemical testing + # note: thus, both "/noAromatic//noStereo/" and "/noAromatic noStereo/" are valid [smiles] == { [entity] | [entity] "." [entity] } [entity] == { [bioSequence] | [molecularSequence] } [molecularSequence] = [node][connections] Modified: trunk/Jmol/src/org/jmol/util/TextFormat.java =================================================================== --- trunk/Jmol/src/org/jmol/util/TextFormat.java 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/src/org/jmol/util/TextFormat.java 2010-07-15 00:58:45 UTC (rev 13579) @@ -91,7 +91,7 @@ } public static String format(double value, int width, int precision, - boolean alignLeft, boolean zeroPad) { + boolean alignLeft, boolean zeroPad, boolean allowOverflow) { return format(formatDecimal((float)value, -1 - precision), width, 0, alignLeft, zeroPad); } @@ -114,7 +114,7 @@ && precision < len) value = value.substring(0, precision); else if (precision < 0 && len + precision >= 0) - value = value.substring(len + precision); + value = value.substring(len + precision + 1); int padLength = width - value.length(); if (padLength <= 0) @@ -302,7 +302,7 @@ zeroPad); else if (!Double.isNaN(doubleT)) strLabel += format(doubleT, width, precision, alignLeft, - zeroPad); + zeroPad, true); if (doOne) break; } catch (IndexOutOfBoundsException ioobe) { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-15 00:58:45 UTC (rev 13579) @@ -3,6 +3,9 @@ version=12.0.RC25 +# bug fix: %5.-5i overflow off by one digit in precision +# new feature: SMILES /nostereo/ /noaromatic/, not just SMARTS +# bug fix: TestSmiles incorrectly assigning bonds in ...[C@H]1... # bug fix: write PDB not correctly justifying atom names # new feature: auxiliaryInfo.compndSource for PDB files # bug fix: console cleared at end of script with set debugScript Modified: trunk/Jmol/test/org/jmol/smiles/TestSmilesParser.java =================================================================== --- trunk/Jmol/test/org/jmol/smiles/TestSmilesParser.java 2010-07-15 00:30:54 UTC (rev 13578) +++ trunk/Jmol/test/org/jmol/smiles/TestSmilesParser.java 2010-07-15 00:58:45 UTC (rev 13579) @@ -311,12 +311,13 @@ atomO2.setSymbol("O"); addHydrogen(molecule, atomO2); createBond(atomO1, atomC1, SmilesBond.TYPE_SINGLE, true); - createBond(atomC1, atomC6, SmilesBond.TYPE_SINGLE, true); + SmilesBond b = createBond(atomC1, null, SmilesBond.TYPE_SINGLE, true); createBond(atomC1, atomC2, SmilesBond.TYPE_SINGLE, true); createBond(atomC2, atomC3, SmilesBond.TYPE_SINGLE, true); createBond(atomC3, atomC4, SmilesBond.TYPE_SINGLE, true); createBond(atomC4, atomC5, SmilesBond.TYPE_SINGLE, true); createBond(atomC5, atomC6, SmilesBond.TYPE_SINGLE, true); + b.setAtom2(atomC6); createBond(atomC6, atomO2, SmilesBond.TYPE_SINGLE, true); checkMolecule("O[C@H]1CCCC[C@H]1O", molecule); } @@ -1098,12 +1099,13 @@ createBond(atomC1, atomC0, SmilesBond.TYPE_SINGLE, true); createBond(atomC1, atomC2, SmilesBond.TYPE_SINGLE, true); createBond(atomC2, atomC3, SmilesBond.TYPE_SINGLE, true); - createBond(atomC3, atomC8, SmilesBond.TYPE_SINGLE, true); + SmilesBond b = createBond(atomC3, null, SmilesBond.TYPE_SINGLE, true); createBond(atomC3, atomC4, SmilesBond.TYPE_SINGLE, true); createBond(atomC4, atomC5, SmilesBond.TYPE_SINGLE, true); createBond(atomC5, atomC6, SmilesBond.TYPE_SINGLE, true); createBond(atomC6, atomC7, SmilesBond.TYPE_SINGLE, true); createBond(atomC7, atomC8, SmilesBond.TYPE_SINGLE, true); + b.setAtom2(atomC8); createBond(atomC8, atomC9, SmilesBond.TYPE_SINGLE, true); createBond(atomC9, atomC0, SmilesBond.TYPE_SINGLE, true); checkMolecule("C1C[C@H]2CCCC[C@H]2CC1", molecule); @@ -1260,7 +1262,7 @@ public SmilesBond createBond(SmilesAtom atom1, SmilesAtom atom2, int bondType, boolean isExplicitH) { SmilesBond b = new SmilesBond(atom1, atom2, bondType, false); - if (!isExplicitH) + if (!isExplicitH || atom2 == null) return b; if (atom1.getElementNumber() == 1) addExplicitH(atom2); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ni...@us...> - 2010-12-16 23:22:50
|
Revision: 14790 http://jmol.svn.sourceforge.net/jmol/?rev=14790&view=rev Author: nicove Date: 2010-12-16 23:22:43 +0000 (Thu, 16 Dec 2010) Log Message: ----------- Languages in their native language Modified Paths: -------------- trunk/Jmol/src/org/jmol/i18n/GT.java trunk/Jmol/src/org/jmol/popup/JmolPopup.java Added Paths: ----------- trunk/Jmol/.settings/org.eclipse.core.resources.prefs Added: trunk/Jmol/.settings/org.eclipse.core.resources.prefs =================================================================== --- trunk/Jmol/.settings/org.eclipse.core.resources.prefs (rev 0) +++ trunk/Jmol/.settings/org.eclipse.core.resources.prefs 2010-12-16 23:22:43 UTC (rev 14790) @@ -0,0 +1,3 @@ +#Fri Dec 17 00:03:32 CET 2010 +eclipse.preferences.version=1 +encoding//src/org/jmol/i18n/GT.java=UTF-8 Property changes on: trunk/Jmol/.settings/org.eclipse.core.resources.prefs ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/Jmol/src/org/jmol/i18n/GT.java =================================================================== --- trunk/Jmol/src/org/jmol/i18n/GT.java 2010-12-16 22:45:01 UTC (rev 14789) +++ trunk/Jmol/src/org/jmol/i18n/GT.java 2010-12-16 23:22:43 UTC (rev 14790) @@ -52,10 +52,12 @@ public static class Language { public final String code; public final String language; + public final String nativeLanguage; public final boolean display; - public Language(String code, String language, boolean display) { + public Language(String code, String language, String nativeLanguage, boolean display) { this.code = code; this.language = language; + this.nativeLanguage = nativeLanguage; this.display = display; } } @@ -115,37 +117,37 @@ boolean wasTranslating = doTranslate; doTranslate = false; languageList = new Language[] { - new Language("ar", GT._("Arabic"), false), - new Language("ca", GT._("Catalan"), true), - new Language("zh_CN", GT._("Simplified Chinese"), true), - new Language("zh_TW", GT._("Traditional Chinese"), true), - new Language("cs", GT._("Czech"), true), - new Language("da", GT._("Danish"), true), - new Language("nl", GT._("Dutch"), true), - new Language("en_GB", GT._("British English"), true), - new Language("en_US", GT._("American English"), true), // global default for "en" will be "en_US" - new Language("et", GT._("Estonian"), false), - new Language("fo", GT._("Faroese"), false), - new Language("fr", GT._("French"), true), - new Language("de", GT._("German"), true), - new Language("el", GT._("Greek"), false), - new Language("hu", GT._("Hungarian"), true), - new Language("id", GT._("Indonesian"), true), - new Language("it", GT._("Italian"), true), - new Language("ja", GT._("Japanese"), false), - new Language("ko", GT._("Korean"), true), - new Language("nb", GT._("Norwegian Bokmal"), false), - new Language("oc", GT._("Occitan"), false), - new Language("pl", GT._("Polish"), false), - new Language("pt_BR", GT._("Brazilian Portuguese"), true), - new Language("pt", GT._("Portuguese"), false), - new Language("ru", GT._("Russian"), false), - new Language("sl", GT._("Slovenian"), false), - new Language("es", GT._("Spanish"), true), - new Language("sv", GT._("Swedish"), false), - new Language("ta", GT._("Tamil"), false), - new Language("tr", GT._("Turkish"), true), - new Language("uk", GT._("Ukrainian"), true), + new Language("ar", GT._("Arabic"), "العربية", false), + new Language("ca", GT._("Catalan"), "Català", true), + new Language("zh_CN", GT._("Simplified Chinese"), "简体中文", true), + new Language("zh_TW", GT._("Traditional Chinese"), "繁體中文", true), + new Language("cs", GT._("Czech"), "Čeština", true), + new Language("da", GT._("Danish"), "Dansk", true), + new Language("nl", GT._("Dutch"), "Nederlands", true), + new Language("en_GB", GT._("British English"), "British English", true), + new Language("en_US", GT._("American English"), "American English", true), // global default for "en" will be "en_US" + new Language("et", GT._("Estonian"), "eesti", false), + new Language("fo", GT._("Faroese"), "Føroyskt", false), + new Language("fr", GT._("French"), "Français", true), + new Language("de", GT._("German"), "Deutsch", true), + new Language("el", GT._("Greek"), "Ελληνικά", false), + new Language("hu", GT._("Hungarian"), "Magyar", true), + new Language("id", GT._("Indonesian"), "Indonesia", true), + new Language("it", GT._("Italian"), "Italiano", true), + new Language("ja", GT._("Japanese"), "日本語", false), + new Language("ko", GT._("Korean"), "한국어", true), + new Language("nb", GT._("Norwegian Bokmal"), "Norsk Bokmål", false), + new Language("oc", GT._("Occitan"), "Occitan", false), + new Language("pl", GT._("Polish"), "Polski", false), + new Language("pt_BR", GT._("Brazilian Portuguese"), "Português brasileiro", true), + new Language("pt", GT._("Portuguese"), "Português", false), + new Language("ru", GT._("Russian"), "Русский", false), + new Language("sl", GT._("Slovenian"), "Slovenščina", false), + new Language("es", GT._("Spanish"), "Español", true), + new Language("sv", GT._("Swedish"), "Svenska", false), + new Language("ta", GT._("Tamil"), "தமிழ்", false), + new Language("tr", GT._("Turkish"), "Türkçe", true), + new Language("uk", GT._("Ukrainian"), "Українська", true), }; doTranslate = wasTranslating; return languageList; Modified: trunk/Jmol/src/org/jmol/popup/JmolPopup.java =================================================================== --- trunk/Jmol/src/org/jmol/popup/JmolPopup.java 2010-12-16 22:45:01 UTC (rev 14789) +++ trunk/Jmol/src/org/jmol/popup/JmolPopup.java 2010-12-16 23:22:43 UTC (rev 14790) @@ -612,9 +612,16 @@ if (languages[i].display) { String code = languages[i].code; String name = languages[i].language; + String nativeName = languages[i].nativeLanguage; + String menuLabel = null; + if ((nativeName != null) && (!nativeName.equals(name))) { + menuLabel = GT._(name, true) + " - " + nativeName + " (" + code + ")"; + } else { + menuLabel = GT._(name, true) + " (" + code + ")"; + } addCheckboxMenuItem( menu, - GT._(name, true) + " (" + code + ")", + menuLabel, "language = \"" + code + "\" ##" + name, id + "." + code, language.equals(code), false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ni...@us...> - 2011-01-20 21:22:55
|
Revision: 15009 http://jmol.svn.sourceforge.net/jmol/?rev=15009&view=rev Author: nicove Date: 2011-01-20 21:22:48 +0000 (Thu, 20 Jan 2011) Log Message: ----------- Update of .po files Modified Paths: -------------- trunk/Jmol/src/org/jmol/translation/JmolApplet/es.po trunk/Jmol/tools/launchpad-tools.xml Modified: trunk/Jmol/src/org/jmol/translation/JmolApplet/es.po =================================================================== --- trunk/Jmol/src/org/jmol/translation/JmolApplet/es.po 2011-01-20 18:21:39 UTC (rev 15008) +++ trunk/Jmol/src/org/jmol/translation/JmolApplet/es.po 2011-01-20 21:22:48 UTC (rev 15009) @@ -3,14 +3,14 @@ "Project-Id-Version: Jmol\n" "Report-Msgid-Bugs-To: jmo...@li...\n" "POT-Creation-Date: 2011-01-12 18:30+0100\n" -"PO-Revision-Date: 2011-01-17 00:53+0100\n" +"PO-Revision-Date: 2011-01-20 19:54+0000\n" "Last-Translator: Angel Herráez <ahe...@us...>\n" "Language-Team: Spanish <Jmo...@li...>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-12-16 16:48+0000\n" -"X-Generator: Launchpad (build Unknown)\n" +"X-Launchpad-Export-Date: 2011-01-20 20:52+0000\n" +"X-Generator: Launchpad (build 12214)\n" "X-Poedit-Country: SPAIN\n" "X-Poedit-Language: Spanish\n" "X-Poedit-SourceCharset: utf-8\n" @@ -71,11 +71,19 @@ #: org/jmol/applet/AppletConsole.java:213 msgid "press CTRL-ENTER for new line or paste model data and press Load" -msgstr "pulsa Ctrl+intro para una línea nueva o pega datos de un modelo y luego pulsa Cargar" +msgstr "" +"pulsa Ctrl+intro para una línea nueva o pega datos de un modelo y luego " +"pulsa Cargar" #: org/jmol/applet/AppletConsole.java:215 -msgid "Messages will appear here. Enter commands in the box below. Click the console Help menu item for on-line help, which will appear in a new browser window." -msgstr "Aquí aparecerán los mensajes. Escribe las instrucciones en el recuadro de abajo. Puedes solicitar ayuda en línea usando el menú situado aquí encima; la ayuda se mostrará en una ventana nueva del navegador." +msgid "" +"Messages will appear here. Enter commands in the box below. Click the " +"console Help menu item for on-line help, which will appear in a new browser " +"window." +msgstr "" +"Aquí aparecerán los mensajes. Escribe las instrucciones en el recuadro de " +"abajo. Puedes solicitar ayuda en línea usando el menú situado aquí encima; " +"la ayuda se mostrará en una ventana nueva del navegador." #: org/jmol/applet/Jmol.java:702 #, java-format @@ -134,7 +142,8 @@ msgstr "Verificar" #: org/jmol/console/ScriptEditor.java:135 -msgid "Top[as in \"go to the top\" - (translators: remove this bracketed part]" +msgid "" +"Top[as in \"go to the top\" - (translators: remove this bracketed part]" msgstr "Subir" #: org/jmol/console/ScriptEditor.java:136 @@ -610,22 +619,28 @@ #: org/jmol/modelsetbio/AminoPolymer.java:576 #, java-format msgid "" -"NOTE: Backbone amide hydrogen positions are present and will be ignored. Their positions will be approximated, as in standard DSSP analysis.\n" +"NOTE: Backbone amide hydrogen positions are present and will be ignored. " +"Their positions will be approximated, as in standard DSSP analysis.\n" "Use {0} to not use this approximation.\n" "\n" msgstr "" -"NOTA: Existen posiciones para los hidrógenos amida del esqueleto, pero se ignorarán. Sus posiciones se aproximarán, tal como se hace en un análisis DSSP típico.\n" +"NOTA: Existen posiciones para los hidrógenos amida del esqueleto, pero se " +"ignorarán. Sus posiciones se aproximarán, tal como se hace en un análisis " +"DSSP típico.\n" "Utiliza {0} si no quieres emplear este método.\n" "\n" #: org/jmol/modelsetbio/AminoPolymer.java:582 #, java-format msgid "" -"NOTE: Backbone amide hydrogen positions are present and will be used. Results may differ significantly from standard DSSP analysis.\n" +"NOTE: Backbone amide hydrogen positions are present and will be used. " +"Results may differ significantly from standard DSSP analysis.\n" "Use {0} to ignore these hydrogen positions.\n" "\n" msgstr "" -"NOTA: Existen posiciones para los hidrógenos amida del esqueleto, y se utilizarán. Los resultados pueden diferir de modo significativo de los de un análisis DSSP típico.\n" +"NOTA: Existen posiciones para los hidrógenos amida del esqueleto, y se " +"utilizarán. Los resultados pueden diferir de modo significativo de los de un " +"análisis DSSP típico.\n" "Utiliza {0} para ignorar dichas posiciones de los hidrógenos.\n" "\n" @@ -639,8 +654,7 @@ msgid "Space Group" msgstr "Grupo espacial" -#: org/jmol/popup/JmolPopup.java:424 -#: org/jmol/popup/JmolPopup.java:464 +#: org/jmol/popup/JmolPopup.java:424 org/jmol/popup/JmolPopup.java:464 #: org/jmol/popup/MainPopupResourceBundle.java:569 #: org/jmol/popup/MainPopupResourceBundle.java:583 #: org/jmol/popup/MainPopupResourceBundle.java:592 @@ -1955,7 +1969,8 @@ #: org/jmol/script/ScriptEvaluator.java:2701 msgid "no MO basis/coefficient data available for this frame" -msgstr "en este modelo no hay datos disponibles de base o coeficientes para MO" +msgstr "" +"en este modelo no hay datos disponibles de base o coeficientes para MO" #: org/jmol/script/ScriptEvaluator.java:2704 msgid "no MO occupancy data available" @@ -1980,8 +1995,12 @@ msgstr "no hay datos disponibles" #: org/jmol/script/ScriptEvaluator.java:2720 -msgid "No partial charges were read from the file; Jmol needs these to render the MEP data." -msgstr "No se han podido leer las cargas parciales en el archivo; Jmol las necesita para trazar los datos de MEP" +msgid "" +"No partial charges were read from the file; Jmol needs these to render the " +"MEP data." +msgstr "" +"No se han podido leer las cargas parciales en el archivo; Jmol las necesita " +"para trazar los datos de MEP" #: org/jmol/script/ScriptEvaluator.java:2723 msgid "No unit cell" @@ -2003,8 +2022,12 @@ #: org/jmol/script/ScriptEvaluator.java:2739 #, java-format -msgid "plane expected -- either three points or atom expressions or {0} or {1} or {2}" -msgstr "se esperaba un plano, bien en forma de tres puntos, o bien de expresiones atómicas, o {0}, o {1}, o {2}" +msgid "" +"plane expected -- either three points or atom expressions or {0} or {1} or " +"{2}" +msgstr "" +"se esperaba un plano, bien en forma de tres puntos, o bien de expresiones " +"atómicas, o {0}, o {1}, o {2}" #: org/jmol/script/ScriptEvaluator.java:2742 msgid "property name expected" @@ -2054,7 +2077,9 @@ #: org/jmol/script/ScriptEvaluator.java:2779 #, java-format msgid "unrecognized {0} parameter in Jmol state script (set anyway)" -msgstr "no se reconoce el parámetro {0} en el guión de estado (defínase de todos modos)" +msgstr "" +"no se reconoce el parámetro {0} en el guión de estado (defínase de todos " +"modos)" #: org/jmol/script/ScriptEvaluator.java:2782 #, java-format @@ -2115,8 +2140,11 @@ msgstr "rotar en Z" #: org/jmol/viewer/ActionManager.java:62 -msgid "rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" -msgstr "rotación alrededor de Z (desplazamiento horizontal del ratón) o tamaño (desplazamiento vertical del ratón)" +msgid "" +"rotate Z (horizontal motion of mouse) or zoom (vertical motion of mouse)" +msgstr "" +"rotación alrededor de Z (desplazamiento horizontal del ratón) o tamaño " +"(desplazamiento vertical del ratón)" #: org/jmol/viewer/ActionManager.java:63 msgid "zoom" @@ -2133,17 +2161,22 @@ #: org/jmol/viewer/ActionManager.java:67 msgid "spin model (swipe and release button and stop motion simultaneously)" -msgstr "girar el modelo (deslizar, deteniendo el movimiento al tiempo que se suelta el botón)" +msgstr "" +"girar el modelo (deslizar, deteniendo el movimiento al tiempo que se suelta " +"el botón)" #: org/jmol/viewer/ActionManager.java:68 #, java-format msgid "click on two points to spin around axis clockwise (requires {0})" -msgstr "pulsa en dos puntos para definir un eje de giro horario (requiere {0})" +msgstr "" +"pulsa en dos puntos para definir un eje de giro horario (requiere {0})" #: org/jmol/viewer/ActionManager.java:69 #, java-format -msgid "click on two points to spin around axis counterclockwise (requires {0})" -msgstr "pulsa en dos puntos para definir un eje de giro antihorario (requiere {0})" +msgid "" +"click on two points to spin around axis counterclockwise (requires {0})" +msgstr "" +"pulsa en dos puntos para definir un eje de giro antihorario (requiere {0})" #: org/jmol/viewer/ActionManager.java:71 #, java-format @@ -2195,8 +2228,12 @@ #: org/jmol/viewer/ActionManager.java:83 #, java-format -msgid "if all are selected, unselect all, otherwise add this group of atoms to the set of selected atoms (requires {0})" -msgstr "si están todos seleccionados, eliminar la selección; si no, añadir este grupo de átomos a la selección (requiere {0})" +msgid "" +"if all are selected, unselect all, otherwise add this group of atoms to the " +"set of selected atoms (requires {0})" +msgstr "" +"si están todos seleccionados, eliminar la selección; si no, añadir este " +"grupo de átomos a la selección (requiere {0})" #: org/jmol/viewer/ActionManager.java:85 #, java-format @@ -2255,7 +2292,8 @@ #: org/jmol/viewer/ActionManager.java:98 #, java-format msgid "pick a DRAW point (for measurements) (requires {0}" -msgstr "elige un punto de un objeto dibujado (para mediciones) (requiere {0})" +msgstr "" +"elige un punto de un objeto dibujado (para mediciones) (requiere {0})" #: org/jmol/viewer/ActionManager.java:99 #, java-format @@ -2264,8 +2302,12 @@ #: org/jmol/viewer/ActionManager.java:100 #, java-format -msgid "pick an atom to include it in a measurement (after starting a measurement or after {0})" -msgstr "elige un átomo para incluirlo en una medición (tras haber comenzado una medición o tras {0})" +msgid "" +"pick an atom to include it in a measurement (after starting a measurement or " +"after {0})" +msgstr "" +"elige un átomo para incluirlo en una medición (tras haber comenzado una " +"medición o tras {0})" #: org/jmol/viewer/ActionManager.java:101 msgid "pick an atom to initiate or conclude a measurement" @@ -2327,8 +2369,10 @@ msgstr "elige un átomo más para mostrar la relación de simetría" #: org/jmol/viewer/ActionManager.java:1943 -msgid "pick two atoms in order to display the symmetry relationship between them" -msgstr "elige en orden dos átomos para mostrar la relación de simetría entre ambos" +msgid "" +"pick two atoms in order to display the symmetry relationship between them" +msgstr "" +"elige en orden dos átomos para mostrar la relación de simetría entre ambos" #: org/jmol/viewer/SelectionManager.java:89 #: org/jmol/viewer/SelectionManager.java:105 @@ -2352,7 +2396,9 @@ #: org/jmol/viewer/Viewer.java:8143 msgid "clipboard is not accessible -- use signed applet" -msgstr "no es posible acceder al portapapeles; para ello debe utilizarse la miniaplicación firmada" +msgstr "" +"no es posible acceder al portapapeles; para ello debe utilizarse la " +"miniaplicación firmada" #: org/jmol/viewer/Viewer.java:8898 msgid "Cannot set log file path." @@ -2372,16 +2418,17 @@ #~ msgid "About Jmol" #~ msgstr "Acerca de Jmol" +#, java-format #~ msgid "ERROR: cannot set boolean flag to string value: {0}" #~ msgstr "" -#~ "ERROR: no es posible dar valor de texto a una variable lógica booleana: " -#~ "{0}" +#~ "ERROR: no es posible dar valor de texto a una variable lógica booleana: {0}" +#, java-format #~ msgid "ERROR: cannot set boolean flag to numeric value: {0}" #~ msgstr "" -#~ "ERROR: no es posible dar valor numérico a una variable lógica booleana: " -#~ "{0}" +#~ "ERROR: no es posible dar valor numérico a una variable lógica booleana: {0}" +#, java-format #~ msgid "ERROR: Cannot set value of this variable to a boolean: {0}" #~ msgstr "" #~ "ERROR: no es posible ajustar el valor de esta variable a un valor lógico " @@ -2390,22 +2437,25 @@ #~ msgid "File creation failed." #~ msgstr "Ha fallado la creación del archivo." +#, java-format #~ msgid "" -#~ "File creation by this applet is not allowed. For Base64 JPEG format, use " -#~ "{0}." +#~ "File creation by this applet is not allowed. For Base64 JPEG format, use {0}." #~ msgstr "" #~ "No está permitida la creación de archivos desde esta miniaplicación. Para " #~ "usar un formato JPEG Base64, utiliza {0}." +#, java-format #~ msgid "File {0}" #~ msgstr "Archivo {0}" +#, java-format #~ msgid "{0} Image" #~ msgstr "Imagen {0}" #~ msgid "JVXL Isosurface" #~ msgstr "Isosuperficie JVXL" +#, java-format #~ msgid "{0} 3D Model" #~ msgstr "Modelo 3D {0}" @@ -2425,12 +2475,63 @@ #~ msgstr "Minimizar" #~ msgid "" -#~ "click and drag to select selected OR this group of atoms (requires {0})" +#~ "click on two points to spin around axis clockwise (requires SET PICKING SPIN)" #~ msgstr "" -#~ "pulsar y arrastrar para añadir un grupo de átomos a la selección " +#~ "pulsa en dos puntos para definir un eje de giro horario (requiere SET " +#~ "PICKING SPIN)" + +#~ msgid "" +#~ "click on two points to spin around axis counterclockwise (requires SET " +#~ "PICKING SPIN)" +#~ msgstr "" +#~ "pulsa en dos puntos para definir un eje de giro antihorario (requiere SET " +#~ "PICKING SPIN)" + +#~ msgid "pick a DRAW point (for measurements)" +#~ msgstr "elegir un punto dibujado (para mediciones)" + +#~ msgid "pick an ISOSURFACE point" +#~ msgstr "elige un punto de una isosuperficie" + +#~ msgid "" +#~ "pick a point or atom to navigate to (requires SET NAVIGATIONMODE; " +#~ "undocumented)" +#~ msgstr "" +#~ "elige un punto o un átomo hacia el que navegar (requiere SET " +#~ "NAVIGATIONMODE; no documentado)" + +#, java-format +#~ msgid "toggle selection (requires {0} or {1})" +#~ msgstr "(des)activar la selección (requiere {0} o {1})" + +#, java-format +#~ msgid "click and drag to unselect this group of atoms (requires {0})" +#~ msgstr "" +#~ "pulsar y arrastrar para quitar la selección de este grupo de átomos " #~ "(requiere {0})" +#, java-format #~ msgid "" +#~ "click and drag to select selected OR this group of atoms (requires {0})" +#~ msgstr "" +#~ "pulsar y arrastrar para añadir un grupo de átomos a la selección (requiere " +#~ "{0})" + +#~ msgid "" +#~ "click on two points to spin around axis clockwise (requires SET picking SPIN)" +#~ msgstr "" +#~ "pulsa en dos puntos para definir un eje de giro horario (requiere SET " +#~ "picking SPIN)" + +#~ msgid "" +#~ "click on two points to spin around axis counterclockwise (requires SET " +#~ "picking SPIN)" +#~ msgstr "" +#~ "pulsa en dos puntos para definir un eje de giro antihorario (requiere SET " +#~ "picking SPIN)" + +#, java-format +#~ msgid "" #~ "NOTE: NH hydrogens are present and will not be calculated.\n" #~ "Use {0} for a standard DSSP analysis.\n" #~ "\n" Modified: trunk/Jmol/tools/launchpad-tools.xml =================================================================== --- trunk/Jmol/tools/launchpad-tools.xml 2011-01-20 18:21:39 UTC (rev 15008) +++ trunk/Jmol/tools/launchpad-tools.xml 2011-01-20 21:22:48 UTC (rev 15009) @@ -22,9 +22,9 @@ </move> <move todir="${build.dir}/JmolApplet" includeemptydirs="false"> <fileset dir="${build.dir}/src/org/jmol/translation/JmolApplet"> - <include name="**/src_org_jmol_translation_JmolApplet_JmolApplet-*.po" /> + <include name="**/src_org_jmol_translation_JmolApplet_jmol-applet-*.po" /> </fileset> - <mapper type="glob" from="src_org_jmol_translation_JmolApplet_JmolApplet-*.po" to="*.po" /> + <mapper type="glob" from="src_org_jmol_translation_JmolApplet_jmol-applet-*.po" to="*.po" /> </move> <copy todir="src/org/jmol/translation/Jmol"> <fileset dir="${build.dir}/Jmol" includes="*.po" /> @@ -56,9 +56,9 @@ <mkdir dir="${build.dir}/JmolApplet" /> <move todir="${build.dir}/JmolApplet" includeemptydirs="false"> <fileset dir="${launchpad.export.files}"> - <include name="src_org_jmol_translation_JmolApplet_JmolApplet-*.po" /> + <include name="src_org_jmol_translation_JmolApplet_jmol-applet-*.po" /> </fileset> - <mapper type="glob" from="src_org_jmol_translation_JmolApplet_JmolApplet-*.po" to="*.po" /> + <mapper type="glob" from="src_org_jmol_translation_JmolApplet_jmol-applet-*.po" to="*.po" /> </move> <copy todir="src/org/jmol/translation/Jmol"> <fileset dir="${build.dir}/Jmol" includes="*.po" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2011-09-27 01:19:55
|
Revision: 16139 http://jmol.svn.sourceforge.net/jmol/?rev=16139&view=rev Author: hansonr Date: 2011-09-27 01:19:49 +0000 (Tue, 27 Sep 2011) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/build.xml trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2011-09-27 01:09:31 UTC (rev 16138) +++ trunk/Jmol/build.xml 2011-09-27 01:19:49 UTC (rev 16139) @@ -230,7 +230,7 @@ <mkdir dir="${applet.classes.dir}"/> <copy todir="${applet.classes.dir}" > <fileset dir="src"> - <include name="org/jmol/modelkit/images/*" /> + <include name="org/jmol/awt/modelkit/images/*" /> </fileset> </copy> @@ -436,12 +436,10 @@ <exclude name="**/jmol/_documents/**" /> <exclude name="**/jmol/jcamp/**" /> <exclude name="**/jmol/applet/**" /> - <exclude name="**/jmol/console/**" /> <exclude name="**/jmol/export/**" /> <exclude name="**/jmol/shapebio/**" /> <exclude name="**/jmol/shapespecial/**" /> <exclude name="**/jmol/shapesurface/**" /> - <exclude name="**/jmol/popup/**" /> <exclude name="**/openscience/jmol/Data/**" /> <exclude name="**/openscience/jmol/app/Jmol.class" /> <exclude name="**/openscience/jmol/app/images/**" /> @@ -614,23 +612,9 @@ <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" manifest="manifest/applet.txt"> <fileset dir="${applet.classes.dir}"> <include name="org/jmol/minimize/**" /> - <include name="org/jmol/modelkit/images/**" /> - <include name="org/jmol/modelkit/**" /> </fileset> </jar> - <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Console.jar" manifest="manifest/applet.txt"> - <fileset dir="${applet.classes.dir}"> - <include name="org/jmol/console/**" /> - </fileset> - </jar> - - <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" manifest="manifest/applet.txt"> - <fileset dir="${applet.classes.dir}"> - <include name="org/jmol/popup/**" /> - </fileset> - </jar> - <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" manifest="manifest/applet.txt"> <fileset dir="${applet.classes.dir}"> <include name="org/jmol/adapter/readers/molxyz/**" /> @@ -736,9 +720,7 @@ <!-- changes to this must be replicated below for the signed applet --> <indexjars> <!-- no export or multitouch here - this is the unsigned applet --> - <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Console.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" /> - <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersCifPdb.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersMore.jar" /> @@ -775,11 +757,6 @@ storepass="selfSignedCertificate" alias="selfSignedCertificate" /> <delete file="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" /> - <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Console.jar" - signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Console.jar" - keystore="selfSignedCertificate/selfSignedCertificate.store" - storepass="selfSignedCertificate" alias="selfSignedCertificate" /> - <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Minimize.jar" keystore="selfSignedCertificate/selfSignedCertificate.store" @@ -798,11 +775,6 @@ storepass="selfSignedCertificate" alias="selfSignedCertificate" /> <delete file="${jmol.applet.build.dir}/JmolApplet_MultiTouch.jar.temp" /> - <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" - signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Popup.jar" - keystore="selfSignedCertificate/selfSignedCertificate.store" - storepass="selfSignedCertificate" alias="selfSignedCertificate" /> - <signjar jar="${jmol.applet.build.dir}/JmolApplet0_ReadersCifPdb.jar" signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersCifPdb.jar" keystore="selfSignedCertificate/selfSignedCertificate.store" @@ -904,10 +876,8 @@ <include name="org/jmol/i18n/**" /> </fileset> <indexjars> - <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Console.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Minimize.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_MultiTouch.jar" /> - <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Popup.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersCifPdb.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersMolXyz.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersMore.jar" /> @@ -974,23 +944,9 @@ <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" manifest="manifest/applet.txt"> <fileset dir="${applet.classes.dir}"> <include name="org/jmol/minimize/**" /> - <include name="org/jmol/modelkit/**" /> - <include name="org/jmol/modelkit/images/**" /> </fileset> </jar> - <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Console.jar" manifest="manifest/applet.txt"> - <fileset dir="${applet.classes.dir}"> - <include name="org/jmol/console/**" /> - </fileset> - </jar> - - <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" manifest="manifest/applet.txt"> - <fileset dir="${applet.classes.dir}"> - <include name="org/jmol/popup/**" /> - </fileset> - </jar> - <jar destfile="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" manifest="manifest/applet.txt"> <fileset dir="${applet.classes.dir}"> <include name="org/jmol/adapter/readers/molxyz/**" /> @@ -1095,9 +1051,7 @@ <!-- changes to this must be replicated below for the signed applet --> <indexjars> <!-- no export or multitouch here - this is the unsigned applet --> - <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Console.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" /> - <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersCifPdb.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersMore.jar" /> Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2011-09-27 01:09:31 UTC (rev 16138) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2011-09-27 01:19:49 UTC (rev 16139) @@ -4970,6 +4970,7 @@ switch (type) { case 'j': getPopupMenu(); + // can throw error if not present; that's ok jmolpopup.show(x, y); break; case 'a': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ni...@us...> - 2011-12-23 18:29:03
|
Revision: 16638 http://jmol.svn.sourceforge.net/jmol/?rev=16638&view=rev Author: nicove Date: 2011-12-23 18:28:56 +0000 (Fri, 23 Dec 2011) Log Message: ----------- Clean after making distribution or release Modified Paths: -------------- trunk/Jmol/build.xml trunk/Jmol/tools/jmol-release.xml Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2011-12-23 17:52:42 UTC (rev 16637) +++ trunk/Jmol/build.xml 2011-12-23 18:28:56 UTC (rev 16638) @@ -792,16 +792,14 @@ </target> - - - <target name="signed-applet" id="signed-applet" depends="applet-jar"> + <target name="signed-applet" id="signed-applet" depends="applet-jar"> <jar destfile="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" - manifest="manifest/appletMonolithic.txt" index="true" > + manifest="manifest/appletMonolithic.txt" index="true" > <fileset dir="${applet.classes.dir}" > <include name="**/*" /> <exclude name="JmolSmiles*" /> <exclude name="org/openscience/**/*" /> - </fileset> + </fileset> <fileset dir="${appletjars.dir}" includes="**/*"/> </jar> <signjar jar="${jmol.applet.build.dir}/JmolAppletSigned.jar.temp" @@ -1303,37 +1301,35 @@ <!-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --> </target> - <target name="smiles-applet-jar" id="smiles-applet-jar" - depends="applet-classes"> - <jar destfile="${jmol.applet.build.dir}/JmolSmilesApplet.jar" - manifest="manifest/appletSmiles.txt" index="true" > - <fileset dir="${classes.dir}" > - <include name="JmolSmiles.class"/> - </fileset> - <fileset dir="${applet.classes.dir}" > - <include name="JmolSmiles*" /> - <include name="org/jmol/smiles/**" /> - <include name="org/jmol/api/SmilesMatcherInterface.class" /> - <include name="org/jmol/constant/**" /> - <include name="org/jmol/util/JmolEdge.class" /> - <include name="org/jmol/util/JmolNode.class" /> - <include name="org/jmol/util/JmolMolecule.class" /> - <include name="org/jmol/util/DefaultLogger.class" /> - <include name="org/jmol/util/Elements.class" /> - <include name="org/jmol/util/Logger.class" /> - <include name="org/jmol/util/LoggerInterface.class" /> - <include name="org/jmol/util/TextFormat.class" /> - </fileset> - <fileset dir="${appletjars.dir}"> - <include name="javax/vecmath/*3f*" /> - <include name="javax/vecmath/*3d*" /> - <include name="javax/vecmath/Point4f*" /> - <include name="javax/vecmath/Tuple4f*" /> - <exclude name="javax/vecmath/Matrix*" /> - </fileset> - </jar> - - + <target name="smiles-applet-jar" id="smiles-applet-jar" + depends="applet-classes"> + <jar destfile="${jmol.applet.build.dir}/JmolSmilesApplet.jar" + manifest="manifest/appletSmiles.txt" index="true" > + <fileset dir="${classes.dir}" > + <include name="JmolSmiles.class"/> + </fileset> + <fileset dir="${applet.classes.dir}" > + <include name="JmolSmiles*" /> + <include name="org/jmol/smiles/**" /> + <include name="org/jmol/api/SmilesMatcherInterface.class" /> + <include name="org/jmol/constant/**" /> + <include name="org/jmol/util/JmolEdge.class" /> + <include name="org/jmol/util/JmolNode.class" /> + <include name="org/jmol/util/JmolMolecule.class" /> + <include name="org/jmol/util/DefaultLogger.class" /> + <include name="org/jmol/util/Elements.class" /> + <include name="org/jmol/util/Logger.class" /> + <include name="org/jmol/util/LoggerInterface.class" /> + <include name="org/jmol/util/TextFormat.class" /> + </fileset> + <fileset dir="${appletjars.dir}"> + <include name="javax/vecmath/*3f*" /> + <include name="javax/vecmath/*3d*" /> + <include name="javax/vecmath/Point4f*" /> + <include name="javax/vecmath/Tuple4f*" /> + <exclude name="javax/vecmath/Matrix*" /> + </fileset> + </jar> </target> <target name="dist" id="dist" @@ -1465,6 +1461,14 @@ </tar> </target> + <target name="clean-after-dist" id="clean-after-dist"> + <delete dir="build" includeemptydirs="true"> + <exclude name="dist/**/*"/> + <exclude name="doc/**/*"/> + </delete> + <delete dir="build/dist/jmol-${version}"/> + </target> + <target name="apisio-dist" id="apisio-dist" depends="apis-jar,io-jar"> <!-- first build binary distribution --> Modified: trunk/Jmol/tools/jmol-release.xml =================================================================== --- trunk/Jmol/tools/jmol-release.xml 2011-12-23 17:52:42 UTC (rev 16637) +++ trunk/Jmol/tools/jmol-release.xml 2011-12-23 18:28:56 UTC (rev 16638) @@ -68,6 +68,9 @@ <include name="**/*"/> </fileset> </scp> + + <!-- Cleanup --> + <delete dir="${temp.dir}"/> </target> </project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-02-12 19:22:00
|
Revision: 16781 http://jmol.svn.sourceforge.net/jmol/?rev=16781&view=rev Author: hansonr Date: 2012-02-12 19:21:54 +0000 (Sun, 12 Feb 2012) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/appletweb/jspecview.jar trunk/Jmol/jars/jspecview.jar Modified: trunk/Jmol/appletweb/jspecview.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/jspecview.jar =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-02-14 15:34:20
|
Revision: 16797 http://jmol.svn.sourceforge.net/jmol/?rev=16797&view=rev Author: hansonr Date: 2012-02-14 15:34:08 +0000 (Tue, 14 Feb 2012) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/appletweb/jspecview.jar trunk/Jmol/jars/jspecview.jar Modified: trunk/Jmol/appletweb/jspecview.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/jspecview.jar =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-02-15 13:19:15
|
Revision: 16798 http://jmol.svn.sourceforge.net/jmol/?rev=16798&view=rev Author: hansonr Date: 2012-02-15 13:19:04 +0000 (Wed, 15 Feb 2012) Log Message: ----------- JSpecView efficiencies Modified Paths: -------------- trunk/Jmol/appletweb/jspecview.jar trunk/Jmol/jars/jspecview.jar Modified: trunk/Jmol/appletweb/jspecview.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/jspecview.jar =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-02-22 17:27:14
|
Revision: 16831 http://jmol.svn.sourceforge.net/jmol/?rev=16831&view=rev Author: hansonr Date: 2012-02-22 17:27:08 +0000 (Wed, 22 Feb 2012) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/appletweb/jspecview.jar trunk/Jmol/jars/jspecview.jar Modified: trunk/Jmol/appletweb/jspecview.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/jspecview.jar =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-03-08 16:07:11
|
Revision: 16873 http://jmol.svn.sourceforge.net/jmol/?rev=16873&view=rev Author: hansonr Date: 2012-03-08 16:07:02 +0000 (Thu, 08 Mar 2012) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/appletweb/JSpecViewApplet.jar trunk/Jmol/appletweb/JSpecViewAppletPro.jar trunk/Jmol/appletweb/JSpecViewAppletSigned.jar trunk/Jmol/jars/JSpecView.jar Modified: trunk/Jmol/appletweb/JSpecViewApplet.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletPro.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletSigned.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/JSpecView.jar =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-03-08 17:56:19
|
Revision: 16875 http://jmol.svn.sourceforge.net/jmol/?rev=16875&view=rev Author: hansonr Date: 2012-03-08 17:56:10 +0000 (Thu, 08 Mar 2012) Log Message: ----------- JSpecView/JSpecViewAppletPro 2.0.10106 Modified Paths: -------------- trunk/Jmol/appletweb/JSpecViewApplet.jar trunk/Jmol/appletweb/JSpecViewAppletPro.jar trunk/Jmol/appletweb/JSpecViewAppletSigned.jar trunk/Jmol/jars/JSpecView.jar Modified: trunk/Jmol/appletweb/JSpecViewApplet.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletPro.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletSigned.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/JSpecView.jar =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-03-27 22:16:06
|
Revision: 16941 http://jmol.svn.sourceforge.net/jmol/?rev=16941&view=rev Author: hansonr Date: 2012-03-27 22:15:59 +0000 (Tue, 27 Mar 2012) Log Message: ----------- basemodel business for testing Modified Paths: -------------- trunk/Jmol/appletweb/JSpecViewApplet.jar trunk/Jmol/appletweb/JSpecViewAppletSigned.jar trunk/Jmol/jars/JSpecView.jar trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/appletweb/JSpecViewApplet.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletSigned.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/JSpecView.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2012-03-27 17:28:05 UTC (rev 16940) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2012-03-27 22:15:59 UTC (rev 16941) @@ -2844,25 +2844,32 @@ } public String getModelInfoAsString() { - StringBuffer sb = new StringBuffer("model count = "); - sb.append(modelCount).append("\nmodelSetHasVibrationVectors:").append( - modelSetHasVibrationVectors()); - if (modelSetProperties == null) { - sb.append("\nProperties: null"); - } else { + StringBuffer sb = new StringBuffer("<models count=\""); + sb.append(modelCount).append("\" modelSetHasVibrationVectors=\"").append( + modelSetHasVibrationVectors() + "\">\n<properties>"); + if (modelSetProperties != null) { Enumeration<?> e = modelSetProperties.propertyNames(); - sb.append("\nProperties:"); while (e.hasMoreElements()) { String propertyName = (String) e.nextElement(); - sb.append("\n ").append(propertyName).append("=").append( - modelSetProperties.getProperty(propertyName)); + sb.append("\n <property name=\"").append(propertyName).append("\" value=").append( + Escape.escape(modelSetProperties.getProperty(propertyName))).append(" />"); } + sb.append("\n</properties>"); } - for (int i = 0; i < modelCount; ++i) - sb.append("\n").append(i).append(":").append(getModelNumberDotted(i)) - .append(":").append(getModelName(i)).append(":").append( - getModelTitle(i)).append("\nmodelHasVibrationVectors:").append( - modelHasVibrationVectors(i)); + for (int i = 0; i < modelCount; ++i) { + sb.append("\n<model index=\"").append(i) + .append("\" n=\"").append(getModelNumberDotted(i)) + .append("\" id=").append(Escape.escape("" + getModelAuxiliaryInfo(i, "modelID"))); + int ib = getBaseModelIndex(i); + if (ib != i) + sb.append(" baseModelId=").append(Escape.escape(getModelAuxiliaryInfo(ib, "jdxModelID"))); + sb.append(" name=").append(Escape.escape(getModelName(i))) + .append(" title=").append(Escape.escape( + getModelTitle(i))) + .append(" hasVibrationVectors=\"").append( + modelHasVibrationVectors(i)).append("\" />"); + } + sb.append("\n</models>"); return sb.toString(); } @@ -4145,6 +4152,9 @@ */ public int getModelIndexFromId(String id) { boolean haveFile = (id.indexOf("#") >= 0); + boolean isBaseModel = id.toLowerCase().endsWith(".basemodel"); + if (isBaseModel) + id = id.substring(0, id.length() - 10); int errCode = -1; String fname = null; for (int i = 0; i < modelCount; i++) { @@ -4156,7 +4166,7 @@ mid = fname + mid; } if (id.equals(mid)) - return i; + return (isBaseModel ? getBaseModelIndex(i) : i); if (fname != null && id.startsWith(fname)) errCode = -2; } @@ -4217,14 +4227,16 @@ * @return atom bitset */ public BitSet getBaseModelBitSet(int modelIndex) { + return getModelAtomBitSetIncludingDeleted(getBaseModelIndex(modelIndex), true); + } + + private int getBaseModelIndex(int modelIndex) { String baseModel = (String) getModelAuxiliaryInfo(modelIndex, "jdxBaseModel"); if (baseModel != null) for (int i = models.length; --i >= 0;) - if (baseModel.equals(getModelAuxiliaryInfo(i, "jdxModelID"))) { - modelIndex = i; - break; - } - return getModelAtomBitSetIncludingDeleted(modelIndex, true); + if (baseModel.equals(getModelAuxiliaryInfo(i, "jdxModelID"))) + return i; + return modelIndex; } Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2012-03-27 17:28:05 UTC (rev 16940) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2012-03-27 22:15:59 UTC (rev 16941) @@ -8787,10 +8787,13 @@ if (script.startsWith("Select: ")) { String filename = Parser.getQuotedAttribute(script, "file"); String modelID = Parser.getQuotedAttribute(script, "model"); + String baseModel = Parser.getQuotedAttribute(script, "baseModel"); String atoms = Parser.getQuotedAttribute(script, "atoms"); String select = Parser.getQuotedAttribute(script, "select"); String script2 = Parser.getQuotedAttribute(script, "script"); String id = (modelID == null ? null : (filename == null ? "" : filename + "#") + modelID); + if ("".equals(baseModel)) + id += ".baseModel"; int modelIndex = (modelID == null ? -3 : getModelIndexFromId(id)); if (modelIndex == -2) return; // file was found, or no file was indicated, but not this model -- ignore This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-03-28 20:39:03
|
Revision: 16943 http://jmol.svn.sourceforge.net/jmol/?rev=16943&view=rev Author: hansonr Date: 2012-03-28 20:38:57 +0000 (Wed, 28 Mar 2012) Log Message: ----------- Jmol embeds directly into JSpecView tool ...open Jmol ...use Tool...JSpecView Modified Paths: -------------- trunk/Jmol/appletweb/JSpecViewApplet.jar trunk/Jmol/appletweb/JSpecViewAppletSigned.jar trunk/Jmol/jars/JSpecView.jar trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java Modified: trunk/Jmol/appletweb/JSpecViewApplet.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletSigned.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/JSpecView.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java 2012-03-28 12:33:32 UTC (rev 16942) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java 2012-03-28 20:38:57 UTC (rev 16943) @@ -34,6 +34,7 @@ import org.jmol.util.Logger; import org.openscience.jmol.app.webexport.WebExport; +import java.awt.Component; import java.io.FileInputStream; import java.io.FileOutputStream; import java.lang.reflect.Method; @@ -353,13 +354,13 @@ if (peaks.startsWith(":")) peaks = peaks.substring(1); if (jSpecViewFrame == null) { - jSpecViewFrame = new MainFrame(this); + jSpecViewFrame = new MainFrame((Component) viewer.getDisplay(), this); jSpecViewFrame.setSize(800, 500); jSpecViewFrame.setLocation(400, 400); jSpecViewFrame.register("Jmol", this); } if (!jSpecViewFrame.isVisible() && peaks.length() > 0 && !peaks.toLowerCase().startsWith("hidden")) - jSpecViewFrame.setVisible(true); + jSpecViewFrame.awaken(false); if (peaks.length() == 0) peaks = "HIDDEN false"; jSpecViewFrame.syncScript(peaks); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-04-08 05:02:13
|
Revision: 16985 http://jmol.svn.sourceforge.net/jmol/?rev=16985&view=rev Author: hansonr Date: 2012-04-08 05:02:07 +0000 (Sun, 08 Apr 2012) Log Message: ----------- 12.3.21 VERSION (note -- 12.3.20 skipped intentionally) # new feature: app flag -R restricts file access -- no local file reading; no writing, no logging # // disables WRITE, LOAD file:/, set logFile # // command line -g and -w options ARE available for final writing of image # // for use with headless operation # new feature: app flag -T <seconds> headless timeout delay for "exitJmol" # note: Headless operation with image creation works perfectly using JmolData.jar # java -Djava.awt.headless=true -Xmx512m -jar "JmolData.jar" -RJ "load $tylenol;" -g1000x1000 -wJPG:t.jpg # see also: http://leshazlewood.com/2009/08/26/linux-javaawtheadless-and-the-display-environment-variable/ # // determined by GraphicsEnvironment.isHeadless() # // from java -Djava.awt.headless=true # // disables command threading # // disables DELAY, TIMEOUT, PAUSE, LOOP, GOTO, SPIN <rate>, ANIMATION ON # // turns SPIN <rate> <end> into just ROTATE <end> # new feature: JSpecView JCamp-MOL files can reference model="$xxxx" -- model retrieved from NCI # bug fix: PDB reader # and state scripts created with 12.1.51-12.2.20 and 12.3.0-12.3.20 # state scripts prior to those versions with multiple models # and also select BOND commands will read the bond indexes incorrectly # and, in addition, will assign proper CONECT links only to the last model # bug fix: if (....) # comment fails # bug fix: Molden reader hack for bad Molden files with ** instead of atom number in [GTO] # bug fix: headless creation of JPG fails # bug fix: spin .... 30 takes 30 to be number of degrees, not rate # version=12.3.20 -- skipped Modified Paths: -------------- trunk/Jmol/appletweb/JSpecViewApplet.jar trunk/Jmol/appletweb/JSpecViewAppletSigned.jar trunk/Jmol/jars/JSpecView.jar trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/appletweb/JSpecViewApplet.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletSigned.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/JSpecView.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2012-04-08 04:59:41 UTC (rev 16984) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2012-04-08 05:02:07 UTC (rev 16985) @@ -1,15 +1,8 @@ # Developers: to add a description of changes you have made, # add it on a line starting with # below the "version=..." line -version=12.3.21_dev +version=12.3.21 -# bug fix: PDB reader -# and state scripts created with 12.1.51-12.2.20 and 12.3.0-12.3.20 -# state scripts prior to those versions with multiple models -# and also select BOND commands will read the bond indexes incorrectly -# and, in addition, will assign proper CONECT links only to the last model -# bug fix: if (....) # comment fails -# bug fix: Molden reader hack for bad Molden files with ** instead of atom number in [GTO] # new feature: app flag -R restricts file access -- no local file reading; no writing, no logging # // disables WRITE, LOAD file:/, set logFile # // command line -g and -w options ARE available for final writing of image @@ -23,8 +16,15 @@ # // disables command threading # // disables DELAY, TIMEOUT, PAUSE, LOOP, GOTO, SPIN <rate>, ANIMATION ON # // turns SPIN <rate> <end> into just ROTATE <end> +# new feature: JSpecView JCamp-MOL files can reference model="$xxxx" -- model retrieved from NCI +# bug fix: PDB reader +# and state scripts created with 12.1.51-12.2.20 and 12.3.0-12.3.20 +# state scripts prior to those versions with multiple models +# and also select BOND commands will read the bond indexes incorrectly +# and, in addition, will assign proper CONECT links only to the last model +# bug fix: if (....) # comment fails +# bug fix: Molden reader hack for bad Molden files with ** instead of atom number in [GTO] # bug fix: headless creation of JPG fails -# new feature: JSpecView JCamp-MOL files can reference model="$xxxx" -- model retrieved from NCI # bug fix: spin .... 30 takes 30 to be number of degrees, not rate # version=12.3.20 -- skipped This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-07-13 22:36:26
|
Revision: 17344 http://jmol.svn.sourceforge.net/jmol/?rev=17344&view=rev Author: hansonr Date: 2012-07-13 22:36:20 +0000 (Fri, 13 Jul 2012) Log Message: ----------- JSpecView update -- close all issue Modified Paths: -------------- trunk/Jmol/appletweb/JSpecViewApplet.jar trunk/Jmol/appletweb/JSpecViewAppletSigned.jar trunk/Jmol/jars/JSpecView.jar trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java Modified: trunk/Jmol/appletweb/JSpecViewApplet.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletSigned.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/JSpecView.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java 2012-07-13 13:12:40 UTC (rev 17343) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java 2012-07-13 22:36:20 UTC (rev 17344) @@ -259,8 +259,12 @@ else if (modelName != null) title = modelName; jmol.notifyFileOpen(fullPathName, title); - if (jSpecViewFrame != null && fullPathName.endsWith(".jdx")) - jSpecViewFrame.syncScript("load CHECK " + Escape.escape(fullPathName)); + if (jSpecViewFrame != null) { + if (fullPathName == null) { + jSpecViewFrame.syncScript("close ALL"); + } else if (fullPathName.endsWith(".jdx")) + jSpecViewFrame.syncScript("load CHECK " + Escape.escape(fullPathName)); + } } private void sendConsoleMessage(String strStatus) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ni...@us...> - 2012-08-07 21:26:26
|
Revision: 17430 http://jmol.svn.sourceforge.net/jmol/?rev=17430&view=rev Author: nicove Date: 2012-08-07 21:26:19 +0000 (Tue, 07 Aug 2012) Log Message: ----------- Change to the build/release process for adding maven deployment Modified Paths: -------------- trunk/Jmol/build.xml trunk/Jmol/tools/jmol-sonatype.xml Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2012-08-06 17:14:16 UTC (rev 17429) +++ trunk/Jmol/build.xml 2012-08-07 21:26:19 UTC (rev 17430) @@ -1503,8 +1503,7 @@ <!-- Copy other files to have a complete distribution --> <copy file="src/org/jmol/viewer/Jmol.properties" tofile="build/dist/Jmol.properties" /> <copy file="${jmol.build.dir}/Jmol.jar" tofile="build/dist/Jmol.jar" /> - <filter token="version" value="${version}"/> - <copy file="tools/pom.xml.template" tofile="build/dist/pom.xml" filtering="true" /> + <copy file="tools/pom.xml.template" tofile="build/dist/pom.xml.template" /> <jar jarfile="build/dist/jmol-${version}-javadoc.jar"> <fileset dir="build/javadoc" /> </jar> Modified: trunk/Jmol/tools/jmol-sonatype.xml =================================================================== --- trunk/Jmol/tools/jmol-sonatype.xml 2012-08-06 17:14:16 UTC (rev 17429) +++ trunk/Jmol/tools/jmol-sonatype.xml 2012-08-07 21:26:19 UTC (rev 17430) @@ -1,4 +1,4 @@ -<project name="Jmol release to Sonatype OSSRH repository" default="dist" basedir=".." xmlns:artifact="antlib:org.apache.maven.artifact.ant"> +<project name="Jmol release to Sonatype OSSRH repository" default="snapshot" basedir=".." xmlns:artifact="antlib:org.apache.maven.artifact.ant"> <!-- To use this script, we need to add the tools/maven-ant-tasks-2.1.3.jar to the class path. @@ -23,7 +23,8 @@ <property name="version" value="${Jmol.properties.___version}" /> <!-- define artifacts' name, which follows the convention of Maven --> - <property name="maven-jar" value="${dist-maven}/${artifactId}-${version}.jar" /> + <property name="maven-snapshot-jar" value="${dist-maven}/${artifactId}-${version}-SNAPSHOT.jar" /> + <property name="maven-release-jar" value="${dist-maven}/${artifactId}-${version}.jar" /> <property name="maven-javadoc-jar" value="${dist-maven}/${artifactId}-${version}-javadoc.jar" /> <property name="maven-sources-jar" value="${dist-maven}/${artifactId}-${version}-sources.jar" /> @@ -34,25 +35,21 @@ <property name="maven-staging-repository-url" value="https://oss.sonatype.org/service/local/staging/deploy/maven2/" /> <property name="maven-releases-repository-id" value="releases" /> - <target name="dist" description="generate the distribution"> + <target name="dist-snapshot" description="generate the snapshot distribution"> + <!-- create the dist folder--> <delete dir="${dist-maven}" /> <mkdir dir="${dist-maven}" /> <!-- copy the pom.xml file --> - <copy file="${dist}/pom.xml" tofile="${dist-maven}/pom.xml" /> + <filter token="version" value="${version}-SNAPSHOT"/> + <copy file="${dist}/pom.xml.template" tofile="${dist-maven}/pom.xml" filtering="true" /> <!-- copy the jar artifact --> - <copy file="${dist}/Jmol.jar" tofile="${maven-jar}" /> + <copy file="${dist}/Jmol.jar" tofile="${maven-snapshot-jar}" /> + </target> - <!-- copy the javadoc artifact --> - <copy file="${dist}/jmol-${version}-javadoc.jar" tofile="${maven-javadoc-jar}" /> - - <!-- copy the sources artifact --> - <copy file="${dist}/jmol-${version}-sources.jar" tofile="${maven-sources-jar}" /> - </target> - - <target name="snapshot" depends="dist" description="deploy snapshot version to Maven snapshot repository"> + <target name="snapshot" depends="dist-snapshot" description="deploy snapshot version to Maven snapshot repository"> <artifact:mvn> <arg value="-f" /> <arg value="${dist-maven}/pom.xml" /> @@ -60,11 +57,30 @@ <arg value="-Durl=${maven-snapshots-repository-url}" /> <arg value="-DrepositoryId=${maven-snapshots-repository-id}" /> <arg value="-DpomFile=${dist-maven}/pom.xml" /> - <arg value="-Dfile=${maven-jar}" /> + <arg value="-Dfile=${maven-snapshot-jar}" /> </artifact:mvn> </target> - <target name="deploy" depends="dist" description="deploy release version to Maven staging repository"> + <target name="dist-release" description="generate the release distribution"> + <!-- create the dist folder--> + <delete dir="${dist-maven}" /> + <mkdir dir="${dist-maven}" /> + + <!-- copy the pom.xml file --> + <filter token="version" value="${version}"/> + <copy file="${dist}/pom.xml.template" tofile="${dist-maven}/pom.xml" filtering="true" /> + + <!-- copy the jar artifact --> + <copy file="${dist}/Jmol.jar" tofile="${maven-release-jar}" /> + + <!-- copy the javadoc artifact --> + <copy file="${dist}/jmol-${version}-javadoc.jar" tofile="${maven-javadoc-jar}" /> + + <!-- copy the sources artifact --> + <copy file="${dist}/jmol-${version}-sources.jar" tofile="${maven-sources-jar}" /> + </target> + + <target name="deploy-release" depends="dist-release" description="deploy release version to Maven staging repository"> <!-- sign and deploy the main artifact --> <artifact:mvn> <arg value="-f" /> @@ -73,7 +89,7 @@ <arg value="-Durl=${maven-staging-repository-url}" /> <arg value="-DrepositoryId=${maven-staging-repository-id}" /> <arg value="-DpomFile=${dist-maven}/pom.xml" /> - <arg value="-Dfile=${maven-jar}" /> + <arg value="-Dfile=${maven-release-jar}" /> <arg value="-Pgpg" /> </artifact:mvn> @@ -105,29 +121,29 @@ </target> - <target name="close" description="close the current staging repository"> + <target name="close-release" description="close the current staging repository"> <!-- close the staging repository --> <artifact:mvn> - <arg value="-f" /> - <arg value="${dist-maven}/pom.xml" /> - <arg value="nexus:staging-close" /> - <arg value="-Dnexus.serverAuthId=${maven-staging-repository-id}" /> + <arg value="-f" /> + <arg value="${dist-maven}/pom.xml" /> + <arg value="nexus:staging-close" /> + <arg value="-Dnexus.serverAuthId=${maven-staging-repository-id}" /> </artifact:mvn> </target> - <target name="promote" description="promote the closed staging repository to release repository"> + <target name="promote-release" description="promote the closed staging repository to release repository"> <!-- promote the release --> <artifact:mvn> - <arg value="-f" /> - <arg value="${dist-maven}/pom.xml" /> - <arg value="nexus:staging-promote" /> - <arg value="-Dnexus.promote.autoSelectOverride=true" /> - <arg value="-Dnexus.serverAuthId=${maven-staging-repository-id}" /> - <arg value="-DtargetRepositoryId=${maven-releases-repository-id}" /> + <arg value="-f" /> + <arg value="${dist-maven}/pom.xml" /> + <arg value="nexus:staging-promote" /> + <arg value="-Dnexus.promote.autoSelectOverride=true" /> + <arg value="-Dnexus.serverAuthId=${maven-staging-repository-id}" /> + <arg value="-DtargetRepositoryId=${maven-releases-repository-id}" /> </artifact:mvn> </target> - <target name="release" depends="deploy,close,promote" description="deploy and release a new version of Jmol to the Sonatype Maven repository"> + <target name="release" depends="deploy-release,close-release,promote-release" description="deploy and release a new version of Jmol to the Sonatype Maven repository"> </target> <target name="clean" description="clean up"> @@ -135,4 +151,3 @@ </target> </project> - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-09-03 13:54:56
|
Revision: 17498 http://jmol.svn.sourceforge.net/jmol/?rev=17498&view=rev Author: hansonr Date: 2012-09-03 13:54:45 +0000 (Mon, 03 Sep 2012) Log Message: ----------- JSpecView update Modified Paths: -------------- trunk/Jmol/appletweb/JSpecViewApplet.jar trunk/Jmol/appletweb/JSpecViewAppletSigned.jar trunk/Jmol/jars/JSpecView.jar Modified: trunk/Jmol/appletweb/JSpecViewApplet.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/appletweb/JSpecViewAppletSigned.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/jars/JSpecView.jar =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2012-12-06 16:56:17
|
Revision: 17789 http://jmol.svn.sourceforge.net/jmol/?rev=17789&view=rev Author: hansonr Date: 2012-12-06 16:56:07 +0000 (Thu, 06 Dec 2012) Log Message: ----------- recoding TRY/CATCH out of ScriptParallelProcessor in preparation for JavaScript version Modified Paths: -------------- trunk/Jmol/applet.classes trunk/Jmol/build.xml trunk/Jmol/src/org/jmol/awt/JmolFileAdapter.java trunk/Jmol/src/org/jmol/script/ScriptCompiler.java trunk/Jmol/src/org/jmol/script/ScriptContext.java trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java trunk/Jmol/src/org/jmol/script/ScriptFunction.java trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Added Paths: ----------- trunk/Jmol/src/org/jmol/api/JmolParallelProcessor.java trunk/Jmol/src/org/jmol/parallel/ trunk/Jmol/src/org/jmol/parallel/ScriptParallelProcessor.java trunk/Jmol/src/org/jmol/parallel/ScriptProcessRunnable.java Removed Paths: ------------- trunk/Jmol/src/org/jmol/thread/ScriptParallelProcessor.java trunk/Jmol/src/org/jmol/thread/ScriptProcessRunnable.java Modified: trunk/Jmol/applet.classes =================================================================== --- trunk/Jmol/applet.classes 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/applet.classes 2012-12-06 16:56:07 UTC (rev 17789) @@ -37,6 +37,7 @@ org/jmol/multitouch/*.java org/jmol/multitouch/sparshui/*.java org/jmol/navigate/*.java +org/jmol/parallel/*.java org/jmol/popup/*.java com/sparshui/client/*.java Modified: trunk/Jmol/build.xml =================================================================== --- trunk/Jmol/build.xml 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/build.xml 2012-12-06 16:56:07 UTC (rev 17789) @@ -738,6 +738,12 @@ </fileset> </jar> + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Parallel.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/parallel/**" /> + </fileset> + </jar> + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Spectrum.jar" manifest="manifest/applet.txt"> <fileset dir="${applet.classes.dir}"> <include name="org/jmol/spectrum/**" /> @@ -787,6 +793,7 @@ <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Console.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Navigate.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Parallel.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersCifPdb.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" /> @@ -799,6 +806,7 @@ <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ShapeSpecial.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ShapeSurface.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Smiles.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Spectrum.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Symmetry.jar" /> <fileset dir="${jmol.applet.build.dir}" includes="JmolApplet0_i18n_*.jar" /> @@ -883,6 +891,11 @@ keystore="selfSignedCertificate/selfSignedCertificate.store" storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Parallel.jar" + signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Parallel.jar" + keystore="selfSignedCertificate/selfSignedCertificate.store" + storepass="selfSignedCertificate" alias="selfSignedCertificate" /> + <signjar jar="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" signedjar="${jmol.applet.build.dir}/JmolAppletSigned0_Popup.jar" keystore="selfSignedCertificate/selfSignedCertificate.store" @@ -1002,6 +1015,7 @@ <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Minimize.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_MultiTouch.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Navigate.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Parallel.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Popup.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersCifPdb.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersMolXyz.jar" /> @@ -1057,6 +1071,7 @@ <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Minimize.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_MultiTouch.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Navigate.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Parallel.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_Popup.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersCifPdb.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolAppletSigned0_ReadersMolXyz.jar" /> @@ -1097,6 +1112,12 @@ --> + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Console.jar" manifest="manifest/applet.txt"> + <fileset dir="${applet.classes.dir}"> + <include name="org/jmol/console/**" /> + </fileset> + </jar> + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" manifest="manifest/applet.txt"> <fileset dir="${applet.classes.dir}"> <include name="org/jmol/minimize/**/**" /> @@ -1111,9 +1132,9 @@ </fileset> </jar> - <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Console.jar" manifest="manifest/applet.txt"> + <jar destfile="${jmol.applet.build.dir}/JmolApplet0_Parallel.jar" manifest="manifest/applet.txt"> <fileset dir="${applet.classes.dir}"> - <include name="org/jmol/console/**" /> + <include name="org/jmol/parallel/**" /> </fileset> </jar> @@ -1244,6 +1265,7 @@ <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Console.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Minimize.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Navigate.jar" /> + <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Parallel.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_Popup.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersCifPdb.jar" /> <pathelement path="${jmol.applet.build.dir}/JmolApplet0_ReadersMolXyz.jar" /> Added: trunk/Jmol/src/org/jmol/api/JmolParallelProcessor.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolParallelProcessor.java (rev 0) +++ trunk/Jmol/src/org/jmol/api/JmolParallelProcessor.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -0,0 +1,16 @@ +package org.jmol.api; + +import org.jmol.script.ScriptContext; +import org.jmol.viewer.Viewer; + +public interface JmolParallelProcessor { + + Object getExecutor(); + + void runAllProcesses(Viewer viewer); + + void addProcess(String name, ScriptContext context); + + void set(String name, int tok); + +} Modified: trunk/Jmol/src/org/jmol/awt/JmolFileAdapter.java =================================================================== --- trunk/Jmol/src/org/jmol/awt/JmolFileAdapter.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/awt/JmolFileAdapter.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -55,7 +55,7 @@ try { return new BufferedInputStream(new FileInputStream(file)); } catch (IOException e) { - return e.getMessage(); + return e.toString();//e.getMessage(); } } Copied: trunk/Jmol/src/org/jmol/parallel/ScriptParallelProcessor.java (from rev 17786, trunk/Jmol/src/org/jmol/thread/ScriptParallelProcessor.java) =================================================================== --- trunk/Jmol/src/org/jmol/parallel/ScriptParallelProcessor.java (rev 0) +++ trunk/Jmol/src/org/jmol/parallel/ScriptParallelProcessor.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -0,0 +1,132 @@ +/* $Author: hansonr $ + * $Date: 2010-04-22 13:16:44 -0500 (Thu, 22 Apr 2010) $ + * $Revision: 12904 $ + * + * 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.parallel; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +import org.jmol.api.JmolParallelProcessor; +import org.jmol.script.ScriptContext; +import org.jmol.script.ScriptFunction; +import org.jmol.script.ScriptProcess; +import org.jmol.util.Logger; +import org.jmol.viewer.ShapeManager; +import org.jmol.viewer.Viewer; + +public class ScriptParallelProcessor extends ScriptFunction implements JmolParallelProcessor { + + /** + * parallel operations + * + */ + + public ScriptParallelProcessor() { + } + + public Object getExecutor() { + return Executors.newCachedThreadPool(); + } + + Viewer viewer; + public volatile int counter = 0; + public volatile Error error = null; + Object lock = new Object() ; + + public void runAllProcesses(Viewer viewer) { + if (processes.size() == 0) + return; + this.viewer = viewer; + boolean inParallel = !viewer.isParallel() && viewer.setParallel(true); + List<ShapeManager> vShapeManagers = new ArrayList<ShapeManager>(); + error = null; + counter = 0; + if (Logger.debugging) + Logger.debug("running " + processes.size() + " processes on " + + Viewer.nProcessors + " processesors inParallel=" + inParallel); + + counter = processes.size(); + for (int i = processes.size(); --i >= 0;) { + ShapeManager shapeManager = null; + if (inParallel) { + shapeManager = new ShapeManager(viewer, viewer.getModelSet()); + vShapeManagers.add(shapeManager); + } + runProcess(processes.remove(0), shapeManager); + } + + synchronized (lock) { + while (counter > 0) { + try { + lock.wait(); + } catch (InterruptedException e) { + } + if (error != null) + throw error; + } + } + mergeResults(vShapeManagers); + viewer.setParallel(false); + } + + void mergeResults(List<ShapeManager> vShapeManagers) { + try { + for (int i = 0; i < vShapeManagers.size(); i++) + viewer.mergeShapes(vShapeManagers.get(i).getShapes()); + } catch (Error e) { + throw e; + } finally { + counter = -1; + vShapeManagers = null; + } + } + + public void clearShapeManager(Error er) { + synchronized (this) { + this.error = er; + this.notifyAll(); + } + } + + List<ScriptProcess> processes = new ArrayList<ScriptProcess>(); + + public void addProcess(String name, ScriptContext context) { + processes.add(new ScriptProcess(name, context)); + } + + private void runProcess(final ScriptProcess process, ShapeManager shapeManager) { + ScriptProcessRunnable r = new ScriptProcessRunnable(this, process, lock, shapeManager); + Executor exec = (shapeManager == null ? null : (Executor) viewer.getExecutor()); + if (exec != null) { + exec.execute(r); + } else { + r.run(); + } + } + + public void eval(ScriptContext context, ShapeManager shapeManager) { + viewer.evalParallel(context, shapeManager); + } +} Copied: trunk/Jmol/src/org/jmol/parallel/ScriptProcessRunnable.java (from rev 17601, trunk/Jmol/src/org/jmol/thread/ScriptProcessRunnable.java) =================================================================== --- trunk/Jmol/src/org/jmol/parallel/ScriptProcessRunnable.java (rev 0) +++ trunk/Jmol/src/org/jmol/parallel/ScriptProcessRunnable.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -0,0 +1,77 @@ +/* $RCSfile$ + * $Author$ + * $Date$ + * $Revision$ + * + * Copyright (C) 2011 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 Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +package org.jmol.parallel; + +import org.jmol.script.ScriptProcess; +import org.jmol.script.Token; +import org.jmol.util.Logger; +import org.jmol.viewer.ShapeManager; + +public class ScriptProcessRunnable implements Runnable { + /** + * + */ + private final ScriptParallelProcessor parallelProcessor; + private final ScriptProcess process; + private Object processLock; + private ShapeManager shapeManager; + /** + * + * @param process + * @param lock + * @param shapeManager + * @param parallelProcessor TODO + */ + public ScriptProcessRunnable(ScriptParallelProcessor parallelProcessor, ScriptProcess process, Object lock, ShapeManager shapeManager) { + this.parallelProcessor = parallelProcessor; + this.process = process; + processLock = lock; + this.shapeManager = shapeManager; + } + + public void run() { + try { + if (this.parallelProcessor.error == null) { + if (Logger.debugging) + Logger.debug("Running process " + process.processName + " " + + process.context.pc + " - " + (process.context.pcEnd - 1)); + this.parallelProcessor.eval(process.context, shapeManager); + if (Logger.debugging) + Logger.debug("Process " + process.processName + " complete"); + } + } catch (Exception e) { + if (this.parallelProcessor.tok != Token.trycmd) + e.printStackTrace(); + } catch (Error er) { + this.parallelProcessor.clearShapeManager(er); + } finally { + synchronized (processLock) { + --this.parallelProcessor.counter; + processLock.notifyAll(); + } + } + } +} \ No newline at end of file Modified: trunk/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -23,7 +23,6 @@ package org.jmol.script; -import org.jmol.thread.ScriptParallelProcessor; import org.jmol.util.ArrayUtil; import org.jmol.util.BitSet; import org.jmol.util.Escape; @@ -35,10 +34,12 @@ import org.jmol.util.StringXBuilder; import org.jmol.viewer.JmolConstants; import org.jmol.viewer.Viewer; +import org.jmol.api.Interface; import org.jmol.i18n.GT; import org.jmol.io.JmolBinary; import org.jmol.modelset.Group; import org.jmol.modelset.Bond.BondSet; +import org.jmol.parallel.ScriptParallelProcessor; import java.util.ArrayList; import java.util.Hashtable; @@ -1519,7 +1520,7 @@ if (nTokens == 1) { if (thisFunction != null) vFunctionStack.add(0, thisFunction); - thisFunction = (tokCommand == Token.parallel ? new ScriptParallelProcessor(ident, tokCommand) : new ScriptFunction(ident, tokCommand)); + thisFunction = (tokCommand == Token.parallel ? newScriptParallelProcessor(ident, tokCommand) : new ScriptFunction(ident, tokCommand)); htUserFunctions.put(ident, Boolean.TRUE); flowContext.setFunction(thisFunction); break; // function f @@ -1736,6 +1737,12 @@ return OK; } + private static ScriptFunction newScriptParallelProcessor(String name, int tok) { + ScriptFunction jpp = (ScriptFunction) Interface.getOptionInterface("parallel.ScriptParallelProcessor"); + jpp.set(name, tok); + return jpp; + } + private Token setNewSetCommand(boolean isSetBrace, String ident) { tokCommand = Token.set; isNewSet = (!isSetBrace && !isUserFunction(ident)); @@ -1945,7 +1952,7 @@ flowContext = new ScriptFlowContext(this, ct, pt, flowContext); if (thisFunction != null) vFunctionStack.add(0, thisFunction); - thisFunction = new ScriptParallelProcessor("", tokCommand); + thisFunction = newScriptParallelProcessor("", tokCommand); flowContext.setFunction(thisFunction); pushCount++; vPush.add(ct); Modified: trunk/Jmol/src/org/jmol/script/ScriptContext.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptContext.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/script/ScriptContext.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -27,8 +27,7 @@ import java.util.Map; - -import org.jmol.thread.ScriptParallelProcessor; +import org.jmol.api.JmolParallelProcessor; import org.jmol.util.StringXBuilder; public class ScriptContext { @@ -37,7 +36,7 @@ */ public String fullpath = ""; public String scriptFileName; - public ScriptParallelProcessor parallelProcessor; + public JmolParallelProcessor parallelProcessor; public String functionName; public String script; public short[] lineNumbers; @@ -69,6 +68,8 @@ public boolean mustResumeEval; public boolean isJSThread; public boolean allowJSThreads; + public boolean displayLoadErrorsSave; + public int tryPt; ScriptContext() { } Modified: trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -57,7 +57,6 @@ import org.jmol.shape.Object2d; import org.jmol.shape.Shape; import org.jmol.thread.ScriptDelayThread; -import org.jmol.thread.ScriptParallelProcessor; import org.jmol.util.BitSetUtil; import org.jmol.util.ColorEncoder; import org.jmol.util.Escape; @@ -88,6 +87,7 @@ import org.jmol.util.Tuple3f; import org.jmol.util.Vector3f; import org.jmol.modelset.TickInfo; +import org.jmol.api.JmolParallelProcessor; import org.jmol.viewer.ActionManager; import org.jmol.viewer.FileManager; import org.jmol.viewer.JmolConstants; @@ -285,10 +285,10 @@ private void startEval() { viewer.pushHoldRepaintWhy("runEval"); setScriptExtensions(); - executeCommands(); + executeCommands(false); } - private void executeCommands() { + private void executeCommands(boolean isTry) { boolean haveError = false; try { if (!dispatchCommands(false)) @@ -309,6 +309,10 @@ // property so that it can be caught here. return; } + if (isTry) { + viewer.setStringProperty("_errormessage", "" + e); + return; + } setErrorMessage(e.toString()); errorMessageUntranslated = e.getErrorMessageUntranslated(); scriptStatusOrBuffer(errorMessage); @@ -395,7 +399,7 @@ if (sc.scriptLevel > 0) scriptLevel = sc.scriptLevel - 1; restoreScriptContext(sc, true, false, false); - executeCommands(); + executeCommands(sc.isTryCatch); } /** @@ -660,7 +664,7 @@ * @param shapeManager * @return true if successful; false if not */ - public static boolean evaluateContext(Viewer viewer, ScriptContext context, + public static boolean evaluateParallel(Viewer viewer, ScriptContext context, ShapeManager shapeManager) { ScriptEvaluator e = new ScriptEvaluator(viewer); e.historyDisabled = true; @@ -1505,7 +1509,7 @@ case Token.function: bsAtom.set(i); fv = ScriptVariable.fValue(runFunctionRet(null, userFunction, params, - tokenAtom, true, true)); + tokenAtom, true, true, false)); bsAtom.clear(i); break; case Token.property: @@ -2151,7 +2155,7 @@ return v; } - private ScriptParallelProcessor parallelProcessor; + private JmolParallelProcessor parallelProcessor; @SuppressWarnings("unchecked") public float evalFunctionFloat(Object func, Object params, float[] values) { @@ -2161,17 +2165,20 @@ p.get(i).value = new Float(values[i]); ScriptFunction f = (ScriptFunction) func; return ScriptVariable - .fValue(runFunctionRet(f, f.name, p, null, true, false)); + .fValue(runFunctionRet(f, f.name, p, null, true, false, false)); } catch (Exception e) { return Float.NaN; } } + static int tryPt; + ScriptVariable runFunctionRet(ScriptFunction function, String name, - List<ScriptVariable> params, - ScriptVariable tokenAtom, boolean getReturn, - boolean setContextPath) throws ScriptException { + List<ScriptVariable> params, + ScriptVariable tokenAtom, boolean getReturn, + boolean setContextPath, boolean allowThreads) + throws ScriptException { if (function == null) { // general function call function = viewer.getFunction(name); @@ -2183,43 +2190,42 @@ // "try"; not from evalFunctionFloat contextPath += " >> " + name; } - + pushContext(null); - allowJSThreads = false; + allowJSThreads = allowThreads; boolean isTry = (function.tok == Token.trycmd); thisContext.isTryCatch = isTry; thisContext.isFunction = !isTry; - allowJSThreads = false; functionName = name; - - if (function instanceof ScriptParallelProcessor) { + if (function.tok == Token.trycmd) { + viewer.resetError(); + thisContext.displayLoadErrorsSave = viewer.displayLoadErrors; + thisContext.tryPt = ++tryPt; + viewer.displayLoadErrors = false; + restoreFunction(function, params, tokenAtom); + contextVariables.put("_breakval", + new ScriptVariableInt(Integer.MAX_VALUE)); + contextVariables.put("_errorval", ScriptVariable.newVariable( + Token.string, "")); + Map<String, ScriptVariable> cv = contextVariables; + executeCommands(true); + //JavaScript will not return here after DELAY + while (thisContext.tryPt != tryPt) + popContext(false, false); + processTry(cv); + return null; + } else if (function instanceof JmolParallelProcessor) { synchronized (function) // can't do this -- too general { - parallelProcessor = (ScriptParallelProcessor) function; - vProcess = null; - runFunction(function, params, tokenAtom); - - ScriptContext sc = getScriptContext(); - if (isTry) { - contextVariables.put("_breakval", new ScriptVariableInt(Integer.MAX_VALUE)); - contextVariables.put("_errorval", ScriptVariable.newVariable(Token.string, "")); - viewer.resetError(); - parallelProcessor.addProcess("try", sc); - } - ((ScriptParallelProcessor) function).runAllProcesses(viewer, !isTry); - if (isTry) { - String err = (String) viewer.getParameter("_errormessage"); - if (err.length() > 0) { - contextVariables.put("_errorval", ScriptVariable.newVariable(Token.string, err)); - viewer.resetError(); - } - contextVariables.put("_tryret", contextVariables.get("_retval")); - contextVariables.put("_retval", ScriptVariable.newVariable(0, - contextVariables)); - } + parallelProcessor = (JmolParallelProcessor) function; + restoreFunction(function, params, tokenAtom); + dispatchCommands(false); // to load the processes + ((JmolParallelProcessor) function).runAllProcesses(viewer); } } else { - runFunction(function, params, tokenAtom); + restoreFunction(function, params, tokenAtom); + dispatchCommands(false); + //JavaScript will not return here after DELAY } ScriptVariable v = (getReturn ? getContextVariableAsVariable("_retval") : null); @@ -2227,6 +2233,40 @@ return v; } + private void processTry(Map<String, ScriptVariable> cv) throws ScriptException { + viewer.displayLoadErrors = thisContext.displayLoadErrorsSave; + popContext(false, false); + String err = (String) viewer.getParameter("_errormessage"); + if (err.length() > 0) { + cv.put("_errorval", ScriptVariable.newVariable( + Token.string, err)); + viewer.resetError(); + } + cv.put("_tryret", cv.get("_retval")); + ScriptVariable ret = cv.get("_tryret"); + if (ret.value != null || ret.intValue != Integer.MAX_VALUE) { + returnCmd(ret); + return; + } + String errMsg = (String) (cv.get("_errorval")).value; + if (errMsg.length() == 0) { + int iBreak = (cv.get("_breakval")).intValue; + if (iBreak != Integer.MAX_VALUE) { + breakCmd(pc - iBreak); + return; + } + } + // normal return will skip the catch + if (pc + 1 < aatoken.length && aatoken[pc + 1][0].tok == Token.catchcmd) { + // set the intValue positive to indicate "not done" for the IF evaluation + ContextToken ct = (ContextToken) aatoken[pc + 1][0]; + if (ct.contextVariables != null && ct.name0 != null) + ct.contextVariables.put(ct.name0, ScriptVariable + .newVariable(Token.string, errMsg)); + ct.intValue = (errMsg.length() > 0 ? 1 : -1) * Math.abs(ct.intValue); + } + } + /** * note that functions requiring motion cannot be run * in JavaScript @@ -2236,8 +2276,9 @@ * @param tokenAtom * @throws ScriptException */ - private void runFunction(ScriptFunction function, - List<ScriptVariable> params, ScriptVariable tokenAtom) + private void restoreFunction(ScriptFunction function, + List<ScriptVariable> params, + ScriptVariable tokenAtom) throws ScriptException { aatoken = function.aatoken; lineNumbers = function.lineNumbers; @@ -2250,8 +2291,6 @@ } if (tokenAtom != null) contextVariables.put("_x", tokenAtom); - if (function.tok != Token.trycmd) - dispatchCommands(false); } private void clearDefinedVariableAtomSets() { @@ -5349,7 +5388,6 @@ private boolean dispatchCommands(boolean isSpt) throws ScriptException { long timeBegin = 0; - vProcess = null; if (shapeManager == null) shapeManager = viewer.getShapeManager(); debugScript = logMessages = false; @@ -5390,7 +5428,7 @@ private void commandLoop() throws ScriptException { String lastCommand = ""; boolean isForCheck = false; // indicates the stage of the for command loop - + List<Token[]> vProcess = null; long lastTime = System.currentTimeMillis(); for (; pc < aatoken.length && pc < pcEnd; pc++) { if (!isSyntaxCheck && isJS && allowJSThreads) { @@ -5502,9 +5540,10 @@ case Token.switchcmd: case Token.casecmd: case Token.defaultcmd: - case Token.process: case Token.whilecmd: - isForCheck = flowControl(theToken.tok, isForCheck); + isForCheck = flowControl(theToken.tok, isForCheck, vProcess); + if (theTok == Token.process) + vProcess = null; // "end process" break; case Token.animation: animation(); @@ -5663,6 +5702,11 @@ case Token.print: print(); break; + case Token.process: + pushContext((ContextToken) theToken); + if (parallelProcessor != null) + vProcess = new ArrayList<Token[]>(); + break; case Token.prompt: prompt(); break; @@ -5994,8 +6038,7 @@ } } - @SuppressWarnings("unchecked") - private boolean flowControl(int tok, boolean isForCheck) + private boolean flowControl(int tok, boolean isForCheck, List<Token[]> vProcess) throws ScriptException { ContextToken ct; switch (tok) { @@ -6021,11 +6064,6 @@ contextVariables.put(ct.name0, ct.contextVariables.get(ct.name0)); isOK = !isDone; break; - case Token.process: - pushContext((ContextToken) theToken); - isDone = isOK = true; - addProcess(pc, pt, true); - break; case Token.switchcmd: case Token.defaultcmd: case Token.casecmd: @@ -6215,30 +6253,7 @@ ScriptFunction trycmd = (ScriptFunction) getToken(1).value; if (isSyntaxCheck) return false; - Map<String, ScriptVariable> cv = (Map<String, ScriptVariable>) runFunctionRet( - trycmd, "try", null, null, true, true).value; - ScriptVariable ret = cv.get("_tryret"); - if (ret.value != null || ret.intValue != Integer.MAX_VALUE) { - returnCmd(ret); - return false; - } - String errMsg = (String) (cv.get("_errorval")).value; - if (errMsg.length() == 0) { - int iBreak = (cv.get("_breakval")).intValue; - if (iBreak != Integer.MAX_VALUE) { - breakCmd(pc - iBreak); - return false; - } - } - // normal return will skip the catch - if (pc + 1 < aatoken.length && aatoken[pc + 1][0].tok == Token.catchcmd) { - // set the intValue positive to indicate "not done" for the IF evaluation - ct = (ContextToken) aatoken[pc + 1][0]; - if (ct.contextVariables != null && ct.name0 != null) - ct.contextVariables.put(ct.name0, ScriptVariable - .newVariable(Token.string, errMsg)); - ct.intValue = (errMsg.length() > 0 ? 1 : -1) * Math.abs(ct.intValue); - } + runFunctionRet(trycmd, "try", null, null, true, true, true); return false; case Token.catchcmd: popContext(true, false); @@ -6248,7 +6263,7 @@ viewer.addFunction((ScriptFunction) theToken.value); return isForCheck; case Token.process: - addProcess(pt, pc, false); + addProcess(vProcess, pt, pc); popContext(true, false); break; case Token.switchcmd: @@ -6357,26 +6372,19 @@ } } - private List<Token[]> vProcess; static int iProcess; - private void addProcess(int pc, int pt, boolean isStart) { + private void addProcess(List<Token[]> vProcess, int pc, int pt) { if (parallelProcessor == null) return; - if (isStart) { - vProcess = new ArrayList<Token[]>(); - } else { - - Token[][] statements = new Token[pt][]; - for (int i = 0; i < vProcess.size(); i++) - statements[i + 1 - pc] = vProcess.get(i); - ScriptContext context = getScriptContext(); - context.aatoken = statements; - context.pc = 1 - pc; - context.pcEnd = pt; - parallelProcessor.addProcess("p" + (++iProcess), context); - vProcess = null; - } + Token[][] statements = new Token[pt][]; + for (int i = 0; i < vProcess.size(); i++) + statements[i + 1 - pc] = vProcess.get(i); + ScriptContext context = getScriptContext(); + context.aatoken = statements; + context.pc = 1 - pc; + context.pcEnd = pt; + parallelProcessor.addProcess("p" + (++iProcess), context); } private int switchCmd(ContextToken c, int tok) throws ScriptException { @@ -10773,7 +10781,7 @@ : parameterExpressionList(1, -1, false)); if (isSyntaxCheck) return; - runFunctionRet(null, name, params, null, false, true); + runFunctionRet(null, name, params, null, false, true, true); } private void sync() throws ScriptException { Modified: trunk/Jmol/src/org/jmol/script/ScriptFunction.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptFunction.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/script/ScriptFunction.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -69,10 +69,18 @@ short[] lineNumbers; String script; + public ScriptFunction() { + // for reflection with ScriptParallelProcessor + } + protected ScriptFunction(String name, int tok) { + set(name, tok); + typeName = Token.nameOf(tok); + } + + public void set(String name, int tok) { this.name = name; this.tok = tok; - typeName = Token.nameOf(tok); } void setVariables(Map<String, ScriptVariable> contextVariables, List<ScriptVariable> params) { Modified: trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -1371,7 +1371,7 @@ null, null, x1.value, new Object[] { name, params }, false, x1.index, false)); } - ScriptVariable var = eval.runFunctionRet(null, name, params, null, true, true); + ScriptVariable var = eval.runFunctionRet(null, name, params, null, true, true, false); return (var == null ? false : addXVar(var)); } Deleted: trunk/Jmol/src/org/jmol/thread/ScriptParallelProcessor.java =================================================================== --- trunk/Jmol/src/org/jmol/thread/ScriptParallelProcessor.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/thread/ScriptParallelProcessor.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -1,134 +0,0 @@ -/* $Author: hansonr $ - * $Date: 2010-04-22 13:16:44 -0500 (Thu, 22 Apr 2010) $ - * $Revision: 12904 $ - * - * 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.thread; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; - -import org.jmol.script.ScriptContext; -import org.jmol.script.ScriptFunction; -import org.jmol.script.ScriptProcess; -import org.jmol.util.Logger; -import org.jmol.viewer.ShapeManager; -import org.jmol.viewer.Viewer; - -public class ScriptParallelProcessor extends ScriptFunction { - - /** - * included try/catch, not just parallel operations - * - * @param name - * @param tok - */ - - public ScriptParallelProcessor(String name, int tok) { - super(name, tok); - } - - public static Object getExecutor() { - return Executors.newCachedThreadPool(); - } - - Viewer viewer; - public volatile int counter = 0; - public volatile Error error = null; - Object lock = new Object() ; - - public void runAllProcesses(Viewer viewer, boolean inParallel) { - if (processes.size() == 0) - return; - this.viewer = viewer; - inParallel &= !viewer.isParallel() && viewer.setParallel(true); - List<ShapeManager> vShapeManagers = new ArrayList<ShapeManager>(); - error = null; - counter = 0; - if (Logger.debugging) - Logger.debug("running " + processes.size() + " processes on " - + Viewer.nProcessors + " processesors inParallel=" + inParallel); - - counter = processes.size(); - for (int i = processes.size(); --i >= 0;) { - ShapeManager shapeManager = null; - if (inParallel) { - shapeManager = new ShapeManager(viewer, viewer.getModelSet()); - vShapeManagers.add(shapeManager); - } - runProcess(processes.remove(0), shapeManager); - } - - synchronized (lock) { - while (counter > 0) { - try { - lock.wait(); - } catch (InterruptedException e) { - } - if (error != null) - throw error; - } - } - mergeResults(vShapeManagers); - viewer.setParallel(false); - } - - void mergeResults(List<ShapeManager> vShapeManagers) { - try { - for (int i = 0; i < vShapeManagers.size(); i++) - viewer.mergeShapes(vShapeManagers.get(i).getShapes()); - } catch (Error e) { - throw e; - } finally { - counter = -1; - vShapeManagers = null; - } - } - - public void clearShapeManager(Error er) { - synchronized (this) { - this.error = er; - this.notifyAll(); - } - } - - List<ScriptProcess> processes = new ArrayList<ScriptProcess>(); - - public void addProcess(String name, ScriptContext context) { - processes.add(new ScriptProcess(name, context)); - } - - private void runProcess(final ScriptProcess process, ShapeManager shapeManager) { - ScriptProcessRunnable r = new ScriptProcessRunnable(this, process, lock, shapeManager); - Executor exec = (shapeManager == null ? null : (Executor) viewer.getExecutor()); - if (exec != null) { - exec.execute(r); - } else { - r.run(); - } - } - - public void eval(ScriptContext context, ShapeManager shapeManager) { - viewer.evalContext(context, shapeManager); - } -} Deleted: trunk/Jmol/src/org/jmol/thread/ScriptProcessRunnable.java =================================================================== --- trunk/Jmol/src/org/jmol/thread/ScriptProcessRunnable.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/thread/ScriptProcessRunnable.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -1,77 +0,0 @@ -/* $RCSfile$ - * $Author$ - * $Date$ - * $Revision$ - * - * Copyright (C) 2011 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 Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -package org.jmol.thread; - -import org.jmol.script.ScriptProcess; -import org.jmol.script.Token; -import org.jmol.util.Logger; -import org.jmol.viewer.ShapeManager; - -public class ScriptProcessRunnable implements Runnable { - /** - * - */ - private final ScriptParallelProcessor parallelProcessor; - private final ScriptProcess process; - private Object processLock; - private ShapeManager shapeManager; - /** - * - * @param process - * @param lock - * @param shapeManager - * @param parallelProcessor TODO - */ - public ScriptProcessRunnable(ScriptParallelProcessor parallelProcessor, ScriptProcess process, Object lock, ShapeManager shapeManager) { - this.parallelProcessor = parallelProcessor; - this.process = process; - processLock = lock; - this.shapeManager = shapeManager; - } - - public void run() { - try { - if (this.parallelProcessor.error == null) { - if (Logger.debugging) - Logger.debug("Running process " + process.processName + " " - + process.context.pc + " - " + (process.context.pcEnd - 1)); - this.parallelProcessor.eval(process.context, shapeManager); - if (Logger.debugging) - Logger.debug("Process " + process.processName + " complete"); - } - } catch (Exception e) { - if (this.parallelProcessor.tok != Token.trycmd) - e.printStackTrace(); - } catch (Error er) { - this.parallelProcessor.clearShapeManager(er); - } finally { - synchronized (processLock) { - --this.parallelProcessor.counter; - processLock.notifyAll(); - } - } - } -} \ No newline at end of file Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2012-12-06 03:20:15 UTC (rev 17788) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2012-12-06 16:56:07 UTC (rev 17789) @@ -34,7 +34,6 @@ import org.jmol.shape.Shape; import org.jmol.thread.JmolThread; import org.jmol.thread.ScriptDelayThread; -import org.jmol.thread.ScriptParallelProcessor; import org.jmol.thread.TimeoutThread; import org.jmol.i18n.GT; import org.jmol.io.Base64; @@ -60,6 +59,7 @@ import org.jmol.api.JmolCallbackListener; import org.jmol.api.JmolImageCreatorInterface; import org.jmol.api.JmolMouseInterface; +import org.jmol.api.JmolParallelProcessor; import org.jmol.api.JmolRendererInterface; import org.jmol.api.JmolRepaintInterface; import org.jmol.api.JmolScriptEditorInterface; @@ -10050,7 +10050,7 @@ if (executor != null || nProcessors < 2) return executor; // note -- a Java 1.5 function try { - executor = ScriptParallelProcessor.getExecutor(); + executor = ((JmolParallelProcessor) Interface.getOptionInterface("parallel.ScriptParallelProcessor")).getExecutor(); } catch (Exception e) { executor = null; } catch (Error er) { @@ -10063,9 +10063,9 @@ public boolean displayLoadErrors = true; - public boolean evalContext(ScriptContext context, ShapeManager shapeManager) { + public boolean evalParallel(ScriptContext context, ShapeManager shapeManager) { displayLoadErrors = false; - boolean isOK = ScriptEvaluator.evaluateContext(this, context, + boolean isOK = ScriptEvaluator.evaluateParallel(this, context, (shapeManager == null ? this.shapeManager : shapeManager)); displayLoadErrors = true; return isOK; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2013-04-28 16:49:19
|
Revision: 18178 http://sourceforge.net/p/jmol/code/18178 Author: hansonr Date: 2013-04-28 16:49:15 +0000 (Sun, 28 Apr 2013) Log Message: ----------- for release: ___JmolVersion="13.1.15" FEATURE CHANGE: default JPEG quality set to 100 (was 75, which looks crappy) new feature: select command parameter completion using [TAB] includes variables new feature: PyMOL-like label offset options: set labelOffset [sx, sy, sz] set labelOffset [mode, sx, sy, sz, ax, ay, az] where sx,sy,sz are screen coord offsets -- in Angstroms -- applied after view rotation -- sy > 0 LOWERS label ax,ay,az are xyz position (in Angstroms; applied before view rotation) mode == 1 indicates xyz position is an offset to the atom position mode != 1 indicates xyz position is absolute new feature: CASTEP energy reading new feature: XCrysDen file reader new feature: VASP POSCAR reader new feature: set cartoonLadder -- no bases, like PyMOL new feature: model CREATE n -- allows "empty" model creation without atoms -- n = number of models to create -- defaults to 1 new feature: "all frames" toolbar button starts/stops PyMOL movies: if(_isMovie){if (_animating) {animation off}else{animation play}} else {frame *} new feature: Jmol/JmolData application -I flag accepts input from System.in and command piping: type t.spt | jmol -I start Jmol with this script Note: if you use a pipe, be sure to make "exitJmol" the last command of the script Add -o for output to System.out. Without the pipe, we are going to control Jmol from a Jmol> prompt on the command line console jmol -Io see messages on input console ...messages from Jmol Jmol> background red;load 1crn.pdb;.... ...messages from Jmol Jmol> exitJmol Add -n for headless operation (will not exit automatically). type t.spt | jmol -Ion Note: if you use a pipe, be sure to make "exitJmol" the last command of the script Add -i for silent operation (no writing to System.output). new feature: dots IGNORE {atom set} ON; new feature: Jmol or JmolData with -g0x0 and load filter "DORESIZE" will automatically resize the image to what is given in the PyMOL file as its default size: JmolData -ns "load t.pse filter 'DORESIZE'" -g0x0 -w "PNGJ:t.png" TODO: PyMOL electron density map data itself (meshes are done) TODO: PyMOL CGOs as CGO command -- preliminary only TODO: Jmol's molecular surface renderer not removing inner surface correctly in some cases TODO: PyMOL movies bug fix: isosurface map property may not reference correct atom bug fix: set isosurfacekey may not work with slabbing bug fix: deleting atoms does not remove bioshape rendering bug fix: isosurface in multi-model context saved in state with wrong model number bug fix: PyMOL label fix, including fonts bug fix: PyMOL rockets, nucleic acid rendering bug fix: write JPG not working in JavaScript bug fix: isosurface ... map property colors not cleared entirely before next mapping bug fix: MSMS reader broken bug fix: labels lost upon z-shading bug fix: isosurface property temperature default smoothing broken in 13.1.13. bug fix: {xxx}.cartoon = {xxx}.temperature.all fails to use correct values (also backbone, trace, etc.) bug fix: isosurface translucent level not re-zeroed properly bug fix: IDTF exporter with translucency fails bug fix: commands f.sort() and f.reverse() fail. bug fix: {;...;} syntax does not work in 13.1 bug fix: select dots > 0 does not work bug fix: JmolData broken code: PyMOL work; CGO command and class CGO extends DRAW preliminary only; preliminary putty; fix for putty+sticks issue code: PyMOL reader localSettings code: PyMOL putty hack for Cover1.pse removed; colix index error fixed code: PyMOL slab and depth; better field of view; even better zslab/zdepth code: PyMOL reader "backbone" (really a trace -- fixed width?) code: PyMOL reader isosurface solvent code: PyMOL reader and full surfaces, mixed bigEndian/littleEndian Pickle reading code: PyMOL reader: cartoon_ladder_mode approximation as cartoons code: PyMOL reader: includes cartoon type 1,4,7 -> trace code: String JmolViewer.runScript(String script) runs script immediately and returns output buffer code: continued work on PyMOL PSE file reader code: simplification of JmolViewer interface and access to global parameters: // several; methods were deprecated and removed in 13.1.15. All are accessible via "getXxxx" methods: abstract public float getFloat(int tok); abstract public int getInt(int tok); abstract public boolean getBoolean(int tok); //abstract public int getAnimationFps(); see getInt(T.animationFps) //abstract public boolean getShowHydrogens(); see getBoolean(T.showhydrogens) //abstract public boolean getShowMeasurements(); see getBoolean(T.showmeasurements) //abstract public boolean getAxesOrientationRasmol(); see getBoolean(T.axesorientationrasmol) //abstract public int getPercentVdwAtom(); see getInt(T.percentvdwatom) //abstract public boolean getAutoBond(); see getBoolean(T.autobond)) //abstract public boolean showModelSetDownload(); deprecated -- was just "true" Modified Paths: -------------- trunk/Jmol/appletweb/jsmol.zip trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/appletweb/jsmol.zip =================================================================== (Binary files differ) Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2013-04-28 16:26:03 UTC (rev 18177) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2013-04-28 16:49:15 UTC (rev 18178) @@ -9,18 +9,12 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="13.1.15_dev_2013.04.28a" +___JmolVersion="13.1.15" -code: String JmolViewer.runScript(String script) runs script immediately and returns output buffer +FEATURE CHANGE: default JPEG quality set to 100 (was 75, which looks crappy) new feature: select command parameter completion using [TAB] includes variables -bug fix: PyMOL surfaces not returned from PNGJ files -TODO: PyMOL electron density map data itself (meshes are done) -TODO: PyMOL CGOs as CGO command -- preliminary only -TODO: Jmol's molecular surface renderer not removing inner surface correctly in some cases -TODO: PyMOL movies - new feature: PyMOL-like label offset options: set labelOffset [sx, sy, sz] @@ -36,69 +30,18 @@ mode == 1 indicates xyz position is an offset to the atom position mode != 1 indicates xyz position is absolute -bug fix: isosurface map property may not reference correct atom - -DONE: PyMOL mesh, mapping of data to surfaces - -bug fix: set isosurfacekey may not work with slabbing -bug fix: deleting atoms does not remove bioshape rendering -bug fix: isosurface in multi-model context saved in state with wrong model number -bug fix: PyMOL label fix, including fonts -bug fix: PyMOL rockets, nucleic acid rendering - new feature: CASTEP energy reading new feature: XCrysDen file reader new feature: VASP POSCAR reader -bug fix: write JPG not working in JavaScript - -FEATURE CHANGE: default JPEG quality set to 100 (was 75, which looks crappy) - -bug fix: isosurface ... map property colors not cleared entirely before next mapping - new feature: set cartoonLadder -- no bases, like PyMOL -code: simplification of JmolViewer interface and access to global parameters: - - // several; methods were deprecated and removed in 13.1.15. All are accessible via "getXxxx" methods: - - abstract public float getFloat(int tok); - abstract public int getInt(int tok); - abstract public boolean getBoolean(int tok); - - //abstract public int getAnimationFps(); see getInt(T.animationFps) - //abstract public boolean getShowHydrogens(); see getBoolean(T.showhydrogens) - //abstract public boolean getShowMeasurements(); see getBoolean(T.showmeasurements) - //abstract public boolean getAxesOrientationRasmol(); see getBoolean(T.axesorientationrasmol) - //abstract public int getPercentVdwAtom(); see getInt(T.percentvdwatom) - //abstract public boolean getAutoBond(); see getBoolean(T.autobond)) - //abstract public boolean showModelSetDownload(); deprecated -- was just "true" - - -code: PyMOL FOV fix, ZANK fix - -bug fix: MSMS reader broken - -code: PyMOL unique_settings for atoms and bonds; sphere translucency fix -code: PyMOL more backbone/trace business (no bb/trace for carbohydrates; using backbone_sampling only) - -code: PyMOL sphere and putty logic; stronger stars, surface fix, faster movies, star size - -bug fix: labels lost upon z-shading -bug fix: isosurface property temperature default smoothing broken in 13.1.13. -bug fix: {xxx}.cartoon = {xxx}.temperature.all fails to use correct values (also backbone, trace, etc.) - -bug fix: isosurface translucent level not re-zeroed properly - -bug fix: IDTF exporter with translucency fails - new feature: model CREATE n -- allows "empty" model creation without atoms -- n = number of models to create -- defaults to 1 new feature: "all frames" toolbar button starts/stops PyMOL movies: if(_isMovie){if (_animating) {animation off}else{animation play}} else {frame *} -bug fix: commands f.sort() and f.reverse() fail. new feature: Jmol/JmolData application -I flag accepts input from System.in and command piping: @@ -124,18 +67,37 @@ Add -i for silent operation (no writing to System.output). -bug fix: {;...;} syntax does not work in 13.1 - new feature: dots IGNORE {atom set} ON; -bug fix: select dots > 0 does not work - -TODO Q: How does PyMOL fragment a surface? new feature: Jmol or JmolData with -g0x0 and load filter "DORESIZE" will automatically resize the image to what is given in the PyMOL file as its default size: JmolData -ns "load t.pse filter 'DORESIZE'" -g0x0 -w "PNGJ:t.png" + + +TODO: PyMOL electron density map data itself (meshes are done) +TODO: PyMOL CGOs as CGO command -- preliminary only +TODO: Jmol's molecular surface renderer not removing inner surface correctly in some cases +TODO: PyMOL movies + +bug fix: isosurface map property may not reference correct atom +bug fix: set isosurfacekey may not work with slabbing +bug fix: deleting atoms does not remove bioshape rendering +bug fix: isosurface in multi-model context saved in state with wrong model number +bug fix: PyMOL label fix, including fonts +bug fix: PyMOL rockets, nucleic acid rendering +bug fix: write JPG not working in JavaScript +bug fix: isosurface ... map property colors not cleared entirely before next mapping +bug fix: MSMS reader broken +bug fix: labels lost upon z-shading +bug fix: isosurface property temperature default smoothing broken in 13.1.13. +bug fix: {xxx}.cartoon = {xxx}.temperature.all fails to use correct values (also backbone, trace, etc.) +bug fix: isosurface translucent level not re-zeroed properly +bug fix: IDTF exporter with translucency fails +bug fix: commands f.sort() and f.reverse() fail. +bug fix: {;...;} syntax does not work in 13.1 +bug fix: select dots > 0 does not work bug fix: JmolData broken code: PyMOL work; CGO command and class CGO extends DRAW preliminary only; preliminary putty; fix for putty+sticks issue @@ -147,7 +109,26 @@ code: PyMOL reader and full surfaces, mixed bigEndian/littleEndian Pickle reading code: PyMOL reader: cartoon_ladder_mode approximation as cartoons code: PyMOL reader: includes cartoon type 1,4,7 -> trace +code: String JmolViewer.runScript(String script) runs script immediately and returns output buffer +code: continued work on PyMOL PSE file reader +code: simplification of JmolViewer interface and access to global parameters: + // several; methods were deprecated and removed in 13.1.15. All are accessible via "getXxxx" methods: + + abstract public float getFloat(int tok); + abstract public int getInt(int tok); + abstract public boolean getBoolean(int tok); + + //abstract public int getAnimationFps(); see getInt(T.animationFps) + //abstract public boolean getShowHydrogens(); see getBoolean(T.showhydrogens) + //abstract public boolean getShowMeasurements(); see getBoolean(T.showmeasurements) + //abstract public boolean getAxesOrientationRasmol(); see getBoolean(T.axesorientationrasmol) + //abstract public int getPercentVdwAtom(); see getInt(T.percentvdwatom) + //abstract public boolean getAutoBond(); see getBoolean(T.autobond)) + //abstract public boolean showModelSetDownload(); deprecated -- was just "true" + + + ============================================================================= JmolVersion="13.1.14" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |