WEBSERVICEDISCOVERY(
"Attempt (or don't attempt) to connect to JABAWS web services.",
true, Opt.BOOLEAN, Opt.BOOTSTRAP),
- PROPS("Use file filename as the preferences file instead of the usual ~/.jalview_properties file.",
- Opt.STRING, Opt.BOOTSTRAP),
+ PROPS("Use a file as the preferences file instead of the usual ~/"
+ + ChannelProperties.getProperty("preferences.filename")
+ + " file.", Opt.STRING, Opt.BOOTSTRAP),
DEBUG("Start Jalview in debug log level.", Opt.BOOLEAN, Opt.BOOTSTRAP),
TRACE("Start Jalview in trace log level.", Opt.BOOLEAN, Opt.BOOTSTRAP,
Opt.SECRET),
QUIET("Stop all output to STDOUT (after the Java Virtual Machine has started). Use ‑‑quiet a second time to stop all output to STDERR.",
Opt.UNARY, Opt.MULTI, Opt.BOOTSTRAP),
INITSUBSTITUTIONS(
- "Assume that ‑‑substitutions are initially enabled (or initially disabled).",
+ "Set ‑‑substitutions to be initially enabled (or initially disabled).",
true, Opt.BOOLEAN, Opt.BOOTSTRAP, Opt.NOACTION),
// Opening an alignment
- OPEN("Opens one or more alignment files filename or URLs URL in new alignment windows.",
+ OPEN("Opens one or more alignment files or URLs in new alignment windows.",
Opt.STRING, Opt.LINKED, Opt.INCREMENTDEFAULTCOUNTER, Opt.MULTI,
Opt.GLOB, Opt.ALLOWSUBSTITUTIONS, Opt.INPUT),
- APPEND("Appends one or more alignment files filename or URLs URL to the open alignment window (or opens a new alignment if none already open).",
+ APPEND("Appends one or more alignment files or URLs to the open alignment window (or opens a new alignment if none already open).",
Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.GLOB,
Opt.ALLOWSUBSTITUTIONS, Opt.INPUT),
TITLE("Specifies the title for the open alignment window as string.",
+ "nucleotide-ambiguity,\n" + "purine-pyrimidine,\n"
+ "rna-helices,\n" + "t-coffee-scores,\n" + "sequence-id.",
Opt.STRING, Opt.LINKED),
- FEATURES("Add a feature file filename or URL URL to the open alignment.",
- Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
- TREE("Add a tree file filename or URL URL to the open alignment.",
- Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
+ FEATURES("Add a feature file or URL to the open alignment.", Opt.STRING,
+ Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
+ TREE("Add a tree file or URL to the open alignment.", Opt.STRING,
+ Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
SORTBYTREE(
- "Enforces sorting (or not sorting) the alignment in the order of an attached phylogenetic tree.",
+ "Enforces sorting (or not sorting) the open alignment in the order of an attached phylogenetic tree.",
true, Opt.LINKED, Opt.BOOLEAN),
- ANNOTATIONS(
- "Add an annotations file filename or URL URL to the open alignment.",
+ ANNOTATIONS("Add an annotations file or URL to the open alignment.",
Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
SHOWANNOTATIONS(
"Enforces showing (or not showing) alignment annotations.",
// Adding a 3D structure
STRUCTURE(
- "Load a structure file filename or URL URL associated with a sequence in the open alignment. The sequence to be associated with can be specified with a following --seqid argument, or the subval modifier seqid=ID can be used. A subval INDEX can also be used to specify the INDEX-th sequence in the open alignment.",
+ "Load a structure file or URL associated with a sequence in the open alignment.\n"
+ + "The sequence to be associated with can be specified with a following --seqid argument, or the subval modifier seqid=ID can be used. A subval INDEX can also be used to specify the INDEX-th sequence in the open alignment.",
Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
SEQID("Specify the sequence name for the preceding --structure to be associated with.",
Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
- PAEMATRIX(
- "Add a PAE json matrix file filename to the preceding --structure.",
+ PAEMATRIX("Add a PAE json matrix file to the preceding --structure.",
Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
- TEMPFAC("Set the type of temperature factor. Possible values for name are default, plddt.",
- Opt.STRING, Opt.LINKED),
+ TEMPFAC("Set the type of temperature factor. Possible values are:\n"
+ + "default,\n" + "plddt.", Opt.STRING, Opt.LINKED),
STRUCTUREVIEWER(
"Set the structure viewer to use to open the 3d structure file specified in previous --structure to name. Possible values of name are:\n"
- + "none, jmol, chimera, chimerax, pymol.",
+ + "none,\n" + "jmol,\n" + "chimera,\n" + "chimerax,\n"
+ + "pymol.",
Opt.STRING, Opt.LINKED, Opt.MULTI),
NOTEMPFAC(
"Do not show the temperature factor annotation for the preceding --structure.",
SHOWSSANNOTATIONS(null, Opt.BOOLEAN, Opt.LINKED),
// Outputting files
- IMAGE("Output an image of the open alignment window. Format is specified by the subval modifier, a following --type argument or guessed from the file extension. Valid formats/extensions are: svg, png, eps, html, biojs.",
+ IMAGE("Output an image of the open alignment window. Format is specified by the subval modifier, a following --type argument or guessed from the file extension. Valid formats/extensions are:\n"
+ + "svg,\n" + "png,\n" + "eps,\n" + "html,\n" + "biojs.",
Opt.STRING, Opt.LINKED, Opt.ALLOWSUBSTITUTIONS, Opt.ALLOWALL,
Opt.REQUIREINPUT),
- TYPE("Set the image format for the preceding --image to name. Valid values for name are: svg, png, eps, html, biojs.",
- Opt.STRING, Opt.LINKED, Opt.ALLOWALL),
+ TYPE("Set the image format for the preceding --image to name. Valid values for name are: svg,\n"
+ + "png,\n" + "eps,\n" + "html,\n" + "biojs.", Opt.STRING,
+ Opt.LINKED, Opt.ALLOWALL),
TEXTRENDERER(
- "Sets whether text in a vector image format (SVG, HTML, EPS) should be rendered as text or vector line-art. Possible values for name are: text, lineart.",
+ "Sets whether text in a vector image format (SVG, HTML, EPS) should be rendered as text or vector line-art. Possible values for name are:\n"
+ + "text,\n" + "lineart.",
Opt.STRING, Opt.LINKED, Opt.ALLOWALL),
OUTPUT("Export the open alignment to file filename. The format name is specified by the subval modifier format=name, a following --format name argument or guessed from the file extension. Valid format names (and file extensions) are:\n"
+ "fasta (fa, fasta, mfa, fastq),\n" + "pfam (pfam),\n"
+ "phylip,\n" + "jalview.", Opt.STRING, Opt.LINKED, Opt.ALLOWALL),
GROOVY("Process a groovy script in the file for the open alignment.",
Opt.STRING, Opt.LINKED, Opt.MULTI, Opt.ALLOWSUBSTITUTIONS),
- BACKUPS("Enable (or disable) writing backup files when saving an ‑‑output file. This applies to the current open alignment -- to apply to all ‑‑output and ‑‑image files, use after ‑‑all.",
+ BACKUPS("Enable (or disable) writing backup files when saving an ‑‑output file. This applies to the current open alignment. To apply to all ‑‑output and ‑‑image files, use after ‑‑all.",
true, Opt.BOOLEAN, Opt.LINKED, Opt.ALLOWALL),
OVERWRITE(
- "Enable (or disable) overwriting of output files without backups enabled. This applies to the current open alignment -- to apply to all ‑‑output and ‑‑image files, use after ‑‑all.",
+ "Enable (or disable) overwriting of output files without backups enabled. This applies to the current open alignment. To apply to all ‑‑output and ‑‑image files, use after ‑‑all.",
Opt.BOOLEAN, Opt.LINKED, Opt.ALLOWALL),
- CLOSE("Close the current open alignment window. This occurs after other output arguments. This applies to the current open alignment -- to apply to all ‑‑output and ‑‑image files, use after ‑‑all.",
+ CLOSE("Close the current open alignment window. This occurs after other output arguments. This applies to the current open alignment. To apply to all ‑‑output and ‑‑image files, use after ‑‑all.",
Opt.UNARY, Opt.LINKED, Opt.ALLOWALL),
// controlling flow of arguments
+ "{} - the value of the current alignment window default index.",
true, Opt.BOOLEAN, Opt.MULTI, Opt.NOACTION),
ARGFILE("Open one or more files filename and read, line-by-line, as arguments to Jalview.\n"
+ + "Values in an argfile should be given with an equals sign (\"=\") separator with no spaces.\n"
+ "Note that if you use one or more --argfile arguments then all other non-initialising arguments will be ignored.",
Opt.STRING, Opt.MULTI, Opt.BOOTSTRAP, Opt.GLOB,
Opt.ALLOWSUBSTITUTIONS),
if (a.hasOption(Opt.NOACTION))
continue;
- if (!linkedArgs.containsKey(linkedId))
- linkedArgs.put(linkedId, new ArgValuesMap());
-
- ArgValuesMap avm = linkedArgs.get(linkedId);
+ ArgValuesMap avm = getOrCreateLinkedArgValuesMap(linkedId);
// not dealing with both NODUPLICATEVALUES and GLOB
if (a.hasOption(Opt.NODUPLICATEVALUES) && avm.hasValue(a, val))
.toString();
}
}
- if (!linkedArgs.containsKey(defaultLinkedId))
- linkedArgs.put(defaultLinkedId, new ArgValuesMap());
+ getOrCreateLinkedArgValuesMap(defaultLinkedId);
return defaultLinkedId;
}
Position pos, ArgValue av, SubVals sv, String key, String pref,
String def)
{
+ return getFromSubValArgOrPrefWithSubstitutions(null, avm, a, pos, av,
+ sv, key, pref, def);
+ }
+
+ public static String getFromSubValArgOrPrefWithSubstitutions(ArgParser ap,
+ ArgValuesMap avm, Arg a, Position pos, ArgValue av, SubVals sv,
+ String key, String pref, String def)
+ {
if (key == null)
key = a.getName();
+ String value = null;
if (sv != null && sv.has(key) && sv.get(key) != null)
- return sv.get(key);
- if (avm != null && avm.containsArg(a))
+ {
+ value = ap == null ? sv.get(key)
+ : sv.getWithSubstitutions(ap, avm.getLinkedId(), key);
+ }
+ else if (avm != null && avm.containsArg(a))
{
if (pos == Position.FIRST && avm.getValue(a) != null)
- return avm.getValue(a);
+ value = avm.getValue(a);
else if (pos == Position.BEFORE
&& avm.getClosestPreviousArgValueOfArg(av, a) != null)
- return avm.getClosestPreviousArgValueOfArg(av, a).getValue();
+ value = avm.getClosestPreviousArgValueOfArg(av, a).getValue();
else if (pos == Position.AFTER
&& avm.getClosestNextArgValueOfArg(av, a) != null)
- return avm.getClosestNextArgValueOfArg(av, a).getValue();
+ value = avm.getClosestNextArgValueOfArg(av, a).getValue();
}
- return pref != null ? Cache.getDefault(pref, def) : def;
+ else
+ {
+ value = pref != null ? Cache.getDefault(pref, def) : def;
+ }
+ return value;
}
public static boolean getBoolFromSubValOrArg(ArgValuesMap avm, Arg a,
}
}
+ private ArgValuesMap getOrCreateLinkedArgValuesMap(String linkedId)
+ {
+ if (linkedArgs.containsKey(linkedId)
+ && linkedArgs.get(linkedId) != null)
+ return linkedArgs.get(linkedId);
+
+ linkedArgs.put(linkedId, new ArgValuesMap(linkedId));
+ return linkedArgs.get(linkedId);
+ }
+
}
\ No newline at end of file