X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FCommands.java;h=d7d1ea34fa42e9ad2d238a32c5650ad9ac2c3d9f;hb=8f5766ed1f40e637824924ae810b5c033d185d60;hp=3d475051b7874b0611456869a9a547b84ee76958;hpb=9fd03d86789221ae4f6cf720cadf3d99cc68ac33;p=jalview.git diff --git a/src/jalview/bin/Commands.java b/src/jalview/bin/Commands.java index 3d47505..d7d1ea3 100644 --- a/src/jalview/bin/Commands.java +++ b/src/jalview/bin/Commands.java @@ -44,6 +44,9 @@ import jalview.io.FileLoader; import jalview.io.HtmlSvgOutput; import jalview.io.IdentifyFile; import jalview.io.NewickFile; +import jalview.io.exceptions.ImageOutputException; +import jalview.schemes.ColourSchemeI; +import jalview.schemes.ColourSchemeProperty; import jalview.structure.StructureImportSettings.TFType; import jalview.structure.StructureSelectionManager; import jalview.util.FileUtils; @@ -100,6 +103,16 @@ public class Commands theseArgsWereParsed &= processLinked(id); processGroovyScript(id); boolean processLinkedOkay = theseArgsWereParsed; + + // wait around until alignFrame isn't busy + AlignFrame af=afMap.get(id); + while (af!=null && af.getViewport().isCalcInProgress()) + { + try { + Thread.sleep(25); + } catch (Exception q) {}; + } + theseArgsWereParsed &= processImages(id); if (processLinkedOkay) theseArgsWereParsed &= processOutput(id); @@ -107,7 +120,7 @@ public class Commands // close ap if (avm.getBoolean(Arg.CLOSE)) { - AlignFrame af = afMap.get(id); + af = afMap.get(id); if (af != null) { af.closeMenuItem_actionPerformed(true); @@ -249,7 +262,15 @@ public class Commands Arg.COLOUR, sv, null, "DEFAULT_COLOUR_PROT", ""); if ("" != colour) { - af.changeColour_actionPerformed(colour); + ColourSchemeI cs = ColourSchemeProperty.getColourScheme( + af.getViewport(), af.getViewport().getAlignment(), colour); + + if (cs==null && !"None".equals(colour)) + { + Console.warn("Couldn't parse '"+colour+"' as a colourscheme."); + } else { + af.changeColour(cs); + } Jalview.testoutput(argParser, Arg.COLOUR, "zappo", colour); } @@ -548,11 +569,33 @@ public class Commands structureFilepath, tft, paeFilepath, false, ssFromStructure, false, viewerType); - if (headless) + if (sv==null) { - sv.setAsync(false); + Console.error("Failed to import and open structure view."); + continue; } - + try + { + long tries=1000; + while (sv.isBusy() && tries>0) + { + Thread.sleep(25); + if (sv.isBusy()) + { + tries--; + Console.debug( + "Waiting for viewer for " + structureFilepath); + } + } + if (tries==0 && sv.isBusy()) + { + Console.warn("Gave up waiting for structure viewer to load. Something may have gone wrong."); + } + } catch (Exception x) + { + Console.warn("Exception whilst waiting for structure viewer "+structureFilepath,x); + } + Console.debug("Successfully opened viewer for "+structureFilepath); String structureImageFilename = ArgParser.getValueFromSubValOrArg( avm, av, Arg.STRUCTUREIMAGE, subVals); if (sv != null && structureImageFilename != null) @@ -592,12 +635,13 @@ public class Commands } BitmapImageSizing userBis = ImageMaker .parseScaleWidthHeightStrings(scale, width, height); + // TODO MAKE THIS VIEWER INDEPENDENT!! switch (StructureViewer.getViewerType()) { case JMOL: try { - Thread.sleep(1000); + Thread.sleep(1000); // WHY ??? } catch (InterruptedException e) { // TODO Auto-generated catch block @@ -608,8 +652,18 @@ public class Commands if (sview instanceof AppJmol) { AppJmol jmol = (AppJmol) sview; - jmol.makePDBImage(structureImageFile, imageType, renderer, + try { + Console.debug("Rendering image to "+structureImageFile); + jmol.makePDBImage(structureImageFile, imageType, renderer, userBis); + Console.debug("Finished Rendering image to "+structureImageFile); + + } + catch (ImageOutputException ioexc) + { + Console.warn("Unexpected error whilst exporting image to "+structureImageFile,ioexc); + } + } break; default: @@ -717,7 +771,7 @@ public class Commands Cache.setProperty("EXPORT_EMBBED_BIOJSON", "false"); Console.info("Writing " + file); - + try { switch (type) { @@ -766,6 +820,9 @@ public class Commands + "' not known. Ignoring"); break; } + } catch (Exception ioex) { + Console.warn("Unexpected error during export",ioex); + } } } return true;