X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fbin%2FCommands.java;fp=src%2Fjalview%2Fbin%2FCommands.java;h=753ded2c69fa1e36c5eb62fba9b546a3a5f5dd10;hb=e67a74ee1dac618d941fce0fc5ef4561f76380b1;hp=dcdb4c01cf94ed3da3aa3ccc0ba33fc3d44ecec0;hpb=d8fcaf315395d614059f4345c20ff2f86a4476f1;p=jalview.git diff --git a/src/jalview/bin/Commands.java b/src/jalview/bin/Commands.java index dcdb4c0..753ded2 100644 --- a/src/jalview/bin/Commands.java +++ b/src/jalview/bin/Commands.java @@ -14,11 +14,11 @@ import java.util.Locale; import java.util.Map; import jalview.analysis.AlignmentUtils; +import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.argparser.Arg; import jalview.bin.argparser.ArgParser; import jalview.bin.argparser.ArgParser.Position; import jalview.bin.argparser.ArgValue; -import jalview.bin.argparser.ArgValues; import jalview.bin.argparser.ArgValuesMap; import jalview.bin.argparser.SubVals; import jalview.datamodel.AlignmentI; @@ -26,6 +26,7 @@ import jalview.datamodel.SequenceI; import jalview.datamodel.annotations.AlphaFoldAnnotationRowBuilder; import jalview.gui.AlignFrame; import jalview.gui.AlignmentPanel; +import jalview.gui.AppJmol; import jalview.gui.Desktop; import jalview.gui.Preferences; import jalview.gui.StructureChooser; @@ -45,9 +46,13 @@ import jalview.io.IdentifyFile; import jalview.io.NewickFile; import jalview.structure.StructureImportSettings.TFType; import jalview.structure.StructureSelectionManager; +import jalview.util.FileUtils; import jalview.util.HttpUtils; +import jalview.util.ImageMaker; +import jalview.util.ImageMaker.TYPE; import jalview.util.MessageManager; import jalview.util.Platform; +import jalview.util.imagemaker.BitmapImageSizing; public class Commands { @@ -73,7 +78,7 @@ public class Commands argParser = argparser; headless = h; desktop = d; - afMap = new HashMap(); + afMap = new HashMap<>(); if (argparser != null) { processArgs(argparser, headless); @@ -496,8 +501,9 @@ public class Commands .getFromSubValArgOrPrefWithSubstitutions(argParser, avm, Arg.TEMPFAC, Position.AFTER, av, subVals, null, null, null); - boolean notempfac = ArgParser.getBoolFromSubValOrArg(avm, - Arg.NOTEMPFAC, subVals); + boolean notempfac = ArgParser.getFromSubValArgOrPref(avm, + Arg.NOTEMPFAC, subVals, null, "ADD_TEMPFACT_ANN", false, + true); TFType tft = notempfac ? null : TFType.DEFAULT; /* String tftString = subVals.get("tempfac"); @@ -553,17 +559,82 @@ public class Commands } } - boolean addTempFac = notempfac ? false - : ((tft != null) - || Cache.getDefault("ADD_TEMPFACT_ANN", false)); - // TODO use ssFromStructure - StructureChooser.openStructureFileForSequence(null, null, ap, seq, - false, structureFilepath, tft, paeFilepath, false, - ssFromStructure, false, viewerType); + StructureViewer sv = StructureChooser + .openStructureFileForSequence(null, null, ap, seq, false, + structureFilepath, tft, paeFilepath, false, + ssFromStructure, false, viewerType); - String structureImage = ArgParser.getValueFromSubValOrArg(avm, av, - Arg.STRUCTUREIMAGE, subVals); + if (headless) + { + sv.setAsync(false); + } + + String structureImageFilename = ArgParser.getValueFromSubValOrArg( + avm, av, Arg.STRUCTUREIMAGE, subVals); + if (sv != null && structureImageFilename != null) + { + ArgValue siAv = avm.getClosestNextArgValueOfArg(av, + Arg.STRUCTUREIMAGE); + SubVals sisv = null; + if (structureImageFilename.equals(siAv.getValue())) + { + sisv = siAv.getSubVals(); + } + File structureImageFile = new File(structureImageFilename); + String width = ArgParser.getValueFromSubValOrArg(avm, av, + Arg.STRUCTUREIMAGEWIDTH, sisv); + String height = ArgParser.getValueFromSubValOrArg(avm, av, + Arg.STRUCTUREIMAGEHEIGHT, sisv); + String scale = ArgParser.getValueFromSubValOrArg(avm, av, + Arg.STRUCTUREIMAGESCALE, sisv); + String renderer = ArgParser.getValueFromSubValOrArg(avm, av, + Arg.STRUCTUREIMAGETEXTRENDERER, sisv); + String typeS = ArgParser.getValueFromSubValOrArg(avm, av, + Arg.STRUCTUREIMAGETYPE, sisv); + if (typeS == null || typeS.length() == 0) + { + typeS = FileUtils.getExtension(structureImageFile); + } + TYPE imageType; + try + { + imageType = Enum.valueOf(TYPE.class, + typeS.toUpperCase(Locale.ROOT)); + } catch (IllegalArgumentException e) + { + Console.warn("Do not know image format '" + typeS + + "', using PNG"); + imageType = TYPE.PNG; + } + BitmapImageSizing userBis = ImageMaker + .parseScaleWidthHeightStrings(scale, width, height); + switch (StructureViewer.getViewerType()) + { + case JMOL: + try + { + Thread.sleep(1000); + } catch (InterruptedException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + JalviewStructureDisplayI sview = sv + .getJalviewStructureDisplay(); + if (sview instanceof AppJmol) + { + AppJmol jmol = (AppJmol) sview; + jmol.makePDBImage(structureImageFile, imageType, renderer, + userBis); + } + break; + default: + Console.warn("Cannot export image for structure viewer " + + sv.getViewerType() + " yet"); + break; + } + } } } } @@ -638,48 +709,14 @@ public class Commands renderer = "text"; String type = "png"; // default - float bitmapscale = 0.0f; - int bitmapwidth = 0; - int bitmapheight = 0; String scale = ArgParser.getValueFromSubValOrArg(avm, av, Arg.SCALE, subVal); - if (scale != null) - { - try - { - bitmapscale = Float.parseFloat(scale); - } catch (NumberFormatException e) - { - Console.warn("Did not understand scale '" + scale - + "', won't be used."); - } - } String width = ArgParser.getValueFromSubValOrArg(avm, av, Arg.WIDTH, subVal); - if (width != null) - { - try - { - bitmapwidth = Integer.parseInt(width); - } catch (NumberFormatException e) - { - Console.warn("Did not understand width '" + width - + "', won't be used."); - } - } String height = ArgParser.getValueFromSubValOrArg(avm, av, Arg.HEIGHT, subVal); - if (height != null) - { - try - { - bitmapheight = Integer.parseInt(height); - } catch (NumberFormatException e) - { - Console.warn("Did not understand height '" + height - + "', won't be used."); - } - } + BitmapImageSizing userBis = ImageMaker + .parseScaleWidthHeightStrings(scale, width, height); type = ArgParser.getValueFromSubValOrArg(avm, av, Arg.TYPE, subVal); if (type == null && fileName != null) @@ -708,7 +745,7 @@ public class Commands case "png": Console.debug("Outputting type '" + type + "' to " + fileName); - af.createPNG(file, null, bitmapscale, bitmapwidth, bitmapheight); + af.createPNG(file, null, userBis); break; case "html": @@ -875,9 +912,15 @@ public class Commands SequenceI seq = null; if (subVals == null && idAv == null) return null; + if (af == null || af.getCurrentView() == null) + { + return null; + } AlignmentI al = af.getCurrentView().getAlignment(); if (al == null) + { return null; + } if (subVals != null) { if (subVals.has(Arg.SEQID.getName())) @@ -896,54 +939,4 @@ public class Commands } return seq; } - - // returns the first Arg value intended for the structure structFilename - // (in the given AlignFrame from the ArgValuesMap) - private ArgValue getArgAssociatedWithStructure(Arg arg, ArgValuesMap avm, - AlignFrame af, String structFilename) - { - if (af != null) - { - for (ArgValue av : avm.getArgValueList(arg)) - { - SubVals subVals = av.getSubVals(); - String structid = subVals.get("structid"); - String structfile = subVals.get("structfile"); - - // let's find a structure - if (structfile == null && structid == null) - { - ArgValue likelyStructure = avm.getClosestPreviousArgValueOfArg(av, - Arg.STRUCTURE); - if (likelyStructure != null) - { - SubVals sv = likelyStructure.getSubVals(); - if (sv != null && sv.has(ArgValues.ID)) - { - structid = sv.get(ArgValues.ID); - } - else - { - structfile = likelyStructure.getValue(); - } - } - } - - if (structfile == null && structid != null) - { - StructureSelectionManager ssm = StructureSelectionManager - .getStructureSelectionManager(Desktop.instance); - if (ssm != null) - { - structfile = ssm.findFileForPDBId(structid); - } - } - if (structfile != null && structfile.equals(structFilename)) - { - return av; - } - } - } - return null; - } }