import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.EnumSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
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())
+ AlignFrame af = afMap.get(id);
+ while (af != null && af.getViewport().isCalcInProgress())
{
- try {
+ try
+ {
Thread.sleep(25);
- } catch (Exception q) {};
+ } catch (Exception q)
+ {
+ }
+ ;
}
-
+
theseArgsWereParsed &= processImages(id);
if (processLinkedOkay)
theseArgsWereParsed &= processOutput(id);
if (avm == null)
return true;
- /*
- * // script to execute after all loading is completed one way or another String
- * groovyscript = m.get(Arg.GROOVY) == null ? null :
- * m.get(Arg.GROOVY).getValue(); String file = m.get(Arg.OPEN) == null ? null :
- * m.get(Arg.OPEN).getValue(); String data = null; FileFormatI format = null;
- * DataSourceType protocol = null;
- */
+ // set wrap scope here so it can be applied after structures are opened
+ boolean wrap = false;
+
if (avm.containsArg(Arg.APPEND) || avm.containsArg(Arg.OPEN))
{
commandArgsProvided = true;
af = fileLoader.LoadFileWaitTillLoaded(openFile, protocol,
format);
- // wrap alignment?
- boolean wrap = ArgParser.getFromSubValArgOrPref(avm, Arg.WRAP, sv,
- null, "WRAP_ALIGNMENT", false);
- af.getCurrentView().setWrapAlignment(wrap);
-
// colour alignment?
String colour = ArgParser.getFromSubValArgOrPref(avm, av,
Arg.COLOUR, sv, null, "DEFAULT_COLOUR_PROT", "");
if ("" != colour)
{
ColourSchemeI cs = ColourSchemeProperty.getColourScheme(
- af.getViewport(), af.getViewport().getAlignment(), colour);
-
- if (cs==null && !"None".equals(colour))
+ af.getViewport(), af.getViewport().getAlignment(),
+ colour);
+
+ if (cs == null && !"None".equals(colour))
+ {
+ Console.warn(
+ "Couldn't parse '" + colour + "' as a colourscheme.");
+ }
+ else
{
- Console.warn("Couldn't parse '"+colour+"' as a colourscheme.");
- } else {
af.changeColour(cs);
}
Jalview.testoutput(argParser, Arg.COLOUR, "zappo", colour);
false, false);
}
+ // wrap alignment? do this last for formatting reasons
+ wrap = ArgParser.getFromSubValArgOrPref(avm, Arg.WRAP, sv, null,
+ "WRAP_ALIGNMENT", false);
+ // af.setWrapFormat(wrap) is applied after structures are opened for
+ // annotation reasons
+
// store the AlignFrame for this id
afMap.put(id, af);
String sViewer = ArgParser.getFromSubValArgOrPref(avm,
Arg.STRUCTUREVIEWER, Position.AFTER, av, subVals, null,
null, "jmol");
- ViewerType viewerType = null;
- if (!"none".equals(sViewer))
- {
- for (ViewerType v : EnumSet.allOf(ViewerType.class))
- {
- String name = v.name().toLowerCase(Locale.ROOT)
- .replaceAll(" ", "");
- if (sViewer.equals(name))
- {
- viewerType = v;
- break;
- }
- }
- }
+ ViewerType viewerType = ViewerType.getFromString(sViewer);
// TODO use ssFromStructure
StructureViewer sv = StructureChooser
structureFilepath, tft, paeFilepath, false,
ssFromStructure, false, viewerType);
- if (sv==null)
+ if (sv == null)
{
Console.error("Failed to import and open structure view.");
continue;
}
try
{
+ long tries = 1000;
+ while (sv.isBusy() && tries > 0)
{
- while (sv.isBusy())
- Thread.sleep(25);
+ 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);
+ Console.debug(
+ "Successfully opened viewer for " + structureFilepath);
String structureImageFilename = ArgParser.getValueFromSubValOrArg(
avm, av, Arg.STRUCTUREIMAGE, subVals);
if (sv != null && structureImageFilename != null)
if (sview instanceof AppJmol)
{
AppJmol jmol = (AppJmol) sview;
- try {
- Console.debug("Rendering image to "+structureImageFile);
+ try
+ {
+ Console.debug("Rendering image to " + structureImageFile);
jmol.makePDBImage(structureImageFile, imageType, renderer,
- userBis);
- Console.debug("Finished Rendering image to "+structureImageFile);
+ userBis);
+ Console.debug("Finished Rendering image to "
+ + structureImageFile);
- }
- catch (ImageOutputException ioexc)
+ } catch (ImageOutputException ioexc)
{
- Console.warn("Unexpected error whilst exporting image to "+structureImageFile,ioexc);
+ Console.warn("Unexpected error whilst exporting image to "
+ + structureImageFile, ioexc);
}
}
}
}
+ if (wrap)
+ {
+ AlignFrame af = afMap.get(id);
+ if (af != null)
+ {
+ af.setWrapFormat(wrap, true);
+ }
+ }
+
/*
boolean doShading = avm.getBoolean(Arg.TEMPFAC_SHADING);
if (doShading)
Cache.setProperty("EXPORT_EMBBED_BIOJSON", "false");
Console.info("Writing " + file);
- try {
- switch (type)
+ try
{
-
- case "svg":
- Console.debug("Outputting type '" + type + "' to " + fileName);
- af.createSVG(file, renderer);
- break;
-
- case "png":
- Console.debug("Outputting type '" + type + "' to " + fileName);
- af.createPNG(file, null, userBis);
- break;
-
- case "html":
- Console.debug("Outputting type '" + type + "' to " + fileName);
- HtmlSvgOutput htmlSVG = new HtmlSvgOutput(af.alignPanel);
- htmlSVG.exportHTML(fileName, renderer);
- break;
-
- case "biojs":
- Console.debug("Creating BioJS MSA Viwer HTML file: " + fileName);
- try
- {
- BioJsHTMLOutput.refreshVersionInfo(
- BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY);
- } catch (URISyntaxException e)
+ switch (type)
{
- e.printStackTrace();
+
+ case "svg":
+ Console.debug("Outputting type '" + type + "' to " + fileName);
+ af.createSVG(file, renderer);
+ break;
+
+ case "png":
+ Console.debug("Outputting type '" + type + "' to " + fileName);
+ af.createPNG(file, null, userBis);
+ break;
+
+ case "html":
+ Console.debug("Outputting type '" + type + "' to " + fileName);
+ HtmlSvgOutput htmlSVG = new HtmlSvgOutput(af.alignPanel);
+ htmlSVG.exportHTML(fileName, renderer);
+ break;
+
+ case "biojs":
+ Console.debug(
+ "Creating BioJS MSA Viwer HTML file: " + fileName);
+ try
+ {
+ BioJsHTMLOutput.refreshVersionInfo(
+ BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY);
+ } catch (URISyntaxException e)
+ {
+ e.printStackTrace();
+ }
+ BioJsHTMLOutput bjs = new BioJsHTMLOutput(af.alignPanel);
+ bjs.exportHTML(fileName);
+ break;
+
+ case "eps":
+ Console.debug("Creating EPS file: " + fileName);
+ af.createEPS(file, name);
+ break;
+
+ case "imagemap":
+ Console.debug("Creating ImageMap file: " + fileName);
+ af.createImageMap(file, name);
+ break;
+
+ default:
+ Console.warn(Arg.IMAGE.argString() + " type '" + type
+ + "' not known. Ignoring");
+ break;
}
- BioJsHTMLOutput bjs = new BioJsHTMLOutput(af.alignPanel);
- bjs.exportHTML(fileName);
- break;
-
- case "eps":
- Console.debug("Creating EPS file: " + fileName);
- af.createEPS(file, name);
- break;
-
- case "imagemap":
- Console.debug("Creating ImageMap file: " + fileName);
- af.createImageMap(file, name);
- break;
-
- default:
- Console.warn(Arg.IMAGE.argString() + " type '" + type
- + "' not known. Ignoring");
- break;
- }
- } catch (Exception ioex) {
- Console.warn("Unexpected error during export",ioex);
+ } catch (Exception ioex)
+ {
+ Console.warn("Unexpected error during export", ioex);
}
}
}
String val = av.getValue();
SubVals subVals = av.getSubVals();
String fileName = subVals.getContent();
+ boolean stdout = ArgParser.STDOUTFILENAME.equals(fileName);
File file = new File(fileName);
boolean overwrite = ArgParser.getFromSubValArgOrPref(avm,
Arg.OVERWRITE, subVals, null, "OVERWRITE_OUTPUT", false);
!Platform.isHeadless());
// if backups is not true then --overwrite must be specified
- if (file.exists() && !(overwrite || backups))
+ if (file.exists() && !(overwrite || backups || stdout))
{
Console.error("Won't overwrite file '" + fileName + "' without "
+ Arg.OVERWRITE.argString() + " or "
}
if (ff == null)
{
- StringBuilder validSB = new StringBuilder();
- for (String f : validFormats)
- {
- if (validSB.length() > 0)
- validSB.append(", ");
- validSB.append(f);
- FileFormatI tff = ffs.forName(f);
- validSB.append(" (");
- validSB.append(tff.getExtensions());
- validSB.append(")");
+ if (stdout)
+ {
+ ff = FileFormat.Fasta;
}
+ else
+ {
+ StringBuilder validSB = new StringBuilder();
+ for (String f : validFormats)
+ {
+ if (validSB.length() > 0)
+ validSB.append(", ");
+ validSB.append(f);
+ FileFormatI tff = ffs.forName(f);
+ validSB.append(" (");
+ validSB.append(tff.getExtensions());
+ validSB.append(")");
+ }
- Jalview.exit("No valid format specified for "
- + Arg.OUTPUT.argString() + ". Valid formats are "
- + validSB.toString() + ".", 1);
- // this return really shouldn't happen
- return false;
+ Jalview.exit("No valid format specified for "
+ + Arg.OUTPUT.argString() + ". Valid formats are "
+ + validSB.toString() + ".", 1);
+ // this return really shouldn't happen
+ return false;
+ }
}
String savedBackupsPreference = Cache
Console.info("Writing " + fileName);
- af.saveAlignment(fileName, ff);
+ af.saveAlignment(fileName, ff, stdout);
Console.debug("Returning backups to " + savedBackupsPreference);
if (savedBackupsPreference != null)
Cache.applicationProperties.put(BackupFiles.ENABLED,