From 26eac0ada672f0b0377054cef2899c1161931655 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Mon, 11 May 2020 11:42:56 +0100 Subject: [PATCH] JAL-2422 ChimeraX paths (versions up to 1.0) added for Windows --- .../edu/ucsf/rbvi/strucviz2/StructureManager.java | 68 ++++++++++++++------ 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/src/ext/edu/ucsf/rbvi/strucviz2/StructureManager.java b/src/ext/edu/ucsf/rbvi/strucviz2/StructureManager.java index d1c820c..5cf8a73 100644 --- a/src/ext/edu/ucsf/rbvi/strucviz2/StructureManager.java +++ b/src/ext/edu/ucsf/rbvi/strucviz2/StructureManager.java @@ -56,6 +56,27 @@ import jalview.gui.Preferences; public class StructureManager { + /* + * Version numbers to build Windows installation paths for + * Chimera https://www.cgl.ucsf.edu/chimera/download.html + * ChimeraX http://www.rbvi.ucsf.edu/chimerax/download.html#release + * https://www.rbvi.ucsf.edu/trac/ChimeraX/wiki/ChangeLog + * These are a fallback for Jalview users who don't save path in Preferences; + * these will need to be updated as new versions are released; + * deliberately not 'final' (so modifiable using Groovy). + * + * May 2020: 1.14 is Chimera latest, anticipating a few more... + * 0.93 is ChimeraX latest, 1.0 expected soon + */ + private static String[] CHIMERA_VERSIONS = new String[] { "1.16.2", + "1.16.1", "1.16", + "1.15.2", "1.15.1", "1.15", "1.14.2", "1.14.1", "1.14", + "1.13.1", "1.13", "1.12.2", "1.12.1", "1.12", "1.11.2", + "1.11.2", "1.11.1", "1.11" }; + + private static String[] CHIMERAX_VERSIONS = new String[] { "1.0", "0.93", + "0.92", "0.91", "0.9" }; + static final String[] defaultStructureKeys = { "Structure", "pdb", "pdbFileName", "PDB ID", "structure", "biopax.xref.PDB", "pdb_ids", "ModelName", "ModelNumber" }; @@ -916,27 +937,35 @@ public class StructureManager // } /* - * Jalview addition: check if path set in user preferences. + * Jalview addition: check if path set in user preferences */ String userPath = Cache .getDefault(isChimeraX ? Preferences.CHIMERAX_PATH : Preferences.CHIMERA_PATH, null); if (userPath != null) { - pathList.add(0, userPath); + pathList.add(userPath); } - // FIXME get an updated StructureManager for code for ChimeraX paths - String chimera = isChimeraX ? "ChimeraX" : "chimera"; + /* + * paths are based on getChimeraPaths() in + * Chimera: + * https://github.com/RBVI/structureViz2/blob/master/src/main/java/edu/ucsf/rbvi/structureViz2/internal/model/StructureManager.java + * ChimeraX: + * https://github.com/RBVI/structureVizX/blob/master/src/main/java/edu/ucsf/rbvi/structureVizX/internal/model/StructureManager.java + */ + String chimera = isChimeraX ? "ChimeraX" : "Chimera"; + String chimeraExe = isChimeraX ? "ChimeraX" : "chimera"; // Add default installation paths String os = System.getProperty("os.name"); if (os.startsWith("Linux")) { - pathList.add("/usr/local/chimera/bin/" + chimera); - pathList.add("/usr/local/bin/" + chimera); - pathList.add("/usr/bin/" + chimera); - pathList.add(System.getProperty("user.home") + "/opt/bin/" + chimera); + // todo should this be /chimeraX/ for ChimeraX? not in structureVizX code + pathList.add("/usr/local/chimera/bin/" + chimeraExe); + pathList.add("/usr/local/bin/" + chimeraExe); + pathList.add("/usr/bin/" + chimeraExe); + pathList.add(System.getProperty("user.home") + "/opt/bin/" + chimeraExe); } else if (os.startsWith("Windows")) { @@ -944,25 +973,22 @@ public class StructureManager "C:\\Program Files", "\\Program Files (x86)", "C:\\Program Files (x86)" }) { - /* - * May 2020: 1.14 is the latest, anticipating a few more... - * see https://www.cgl.ucsf.edu/chimera/download.html - */ - for (String version : new String[] { "1.16.2", "1.16.1", "1.16", - "1.15.2", "1.15.1", "1.15", "1.14.2", "1.14.1", "1.14", - "1.13.1", "1.13", "1.12.2", "1.12.1", "1.12", "1.11.2", - "1.11.2", "1.11.1", "1.11" }) + String[] candidates = isChimeraX ? CHIMERAX_VERSIONS + : CHIMERA_VERSIONS; + for (String version : candidates) { - pathList.add(root + "\\Chimera " + version + "\\bin\\" + chimera); - pathList.add( - root + "\\Chimera " + version + "\\bin\\" + chimera - + ".exe"); + // TODO original code doesn't include version in path; which is right? + String path = String.format("%s\\%s %s\\bin\\%s", root, chimera, + version, chimeraExe); + pathList.add(path); + pathList.add(path + ".exe"); } } } else if (os.startsWith("Mac")) { - pathList.add("/Applications/Chimera.app/Contents/MacOS/" + chimera); + pathList.add(String.format("/Applications/%s.app/Contents/MacOS/%s", + chimera, chimeraExe)); } return pathList; } -- 1.7.10.2