#include "gromacs/options/filenameoptioninfo.h"
#include "gromacs/options/options.h"
#include "gromacs/options/optionsvisitor.h"
+#include "gromacs/options/timeunitmanager.h"
#include "gromacs/selection/selectionfileoptioninfo.h"
#include "gromacs/selection/selectionoptioninfo.h"
#include "gromacs/utility/format.h"
{
public:
//! Creates a helper object for writing non-file parameters.
- explicit ParameterWriter(FILE *fp);
+ ParameterWriter(FILE *fp, const char *timeUnit);
//! Sets the writer to show hidden options.
void setShowHidden(bool bSet) { bShowHidden_ = bSet; }
private:
FILE *fp_;
TextTableFormatter formatter_;
+ const char *timeUnit_;
bool bShowHidden_;
};
-ParameterWriter::ParameterWriter(FILE *fp)
- : fp_(fp), bShowHidden_(false)
+ParameterWriter::ParameterWriter(FILE *fp, const char *timeUnit)
+ : fp_(fp), timeUnit_(timeUnit), bShowHidden_(false)
{
formatter_.addColumn("Option", 12, false);
formatter_.addColumn("Type", 6, false);
values.append(option.formatValue(i));
}
formatter_.addColumnLine(2, values);
- formatter_.addColumnLine(3, substituteMarkup(option.description()));
+ std::string description(substituteMarkup(option.description()));
+ const DoubleOptionInfo *doubleOption = option.toType<DoubleOptionInfo>();
+ if (doubleOption != NULL && doubleOption->isTime())
+ {
+ description = replaceAll(description, "%t", timeUnit_);
+ }
+ formatter_.addColumnLine(3, description);
if (values.length() > 6U)
{
formatter_.setColumnFirstLineOffset(3, 1);
*/
CommandLineHelpWriter::Impl::Impl(const Options &options)
- : options_(options), bShowDescriptions_(false), bShowHidden_(false)
+ : options_(options), timeUnit_(TimeUnitManager().timeUnitAsString()),
+ bShowDescriptions_(false), bShowHidden_(false)
{
}
return *this;
}
+CommandLineHelpWriter &CommandLineHelpWriter::setTimeUnitString(const char *timeUnit)
+{
+ impl_->timeUnit_ = timeUnit;
+ return *this;
+}
+
void CommandLineHelpWriter::writeHelp(FILE *fp)
{
if (impl_->bShowDescriptions_)
}
}
{
- ParameterWriter writer(fp);
+ ParameterWriter writer(fp, impl_->timeUnit_.c_str());
writer.setShowHidden(impl_->bShowHidden_);
writer.visitSubSection(impl_->options_);
if (writer.didOutput())
dvec dblvec = {1.1, 2.3, 3.2};
options.addOption(DoubleOption("dvec").description("Double vector option")
.vector().store(dblvec));
- options.addOption(DoubleOption("time").description("Time option")
- .defaultValue(10.0));
+ options.addOption(DoubleOption("time").description("Time option (%t)")
+ .timeValue().defaultValue(10.0));
options.addOption(StringOption("string").description("String option")
.defaultValue("test"));
const char * const enumValues[] = {"no", "opt1", "opt2", NULL};
~Impl();
void printHelp(const Options &options,
+ const TrajectoryAnalysisSettings &settings,
const TrajectoryAnalysisRunnerCommon &common);
bool parseOptions(TrajectoryAnalysisSettings *settings,
TrajectoryAnalysisRunnerCommon *common,
void
TrajectoryAnalysisCommandLineRunner::Impl::printHelp(
const Options &options,
+ const TrajectoryAnalysisSettings &settings,
const TrajectoryAnalysisRunnerCommon &common)
{
TrajectoryAnalysisRunnerCommon::HelpFlags flags = common.helpFlags();
CommandLineHelpWriter(options)
.setShowDescriptions(flags & TrajectoryAnalysisRunnerCommon::efHelpShowDescriptions)
.setShowHidden(flags & TrajectoryAnalysisRunnerCommon::efHelpShowHidden)
+ .setTimeUnitString(settings.timeUnitManager().timeUnitAsString())
.writeHelp(stderr);
}
}
}
catch (const UserInputError &ex)
{
- printHelp(*options, *common);
+ printHelp(*options, *settings, *common);
throw;
}
- printHelp(*options, *common);
+ printHelp(*options, *settings, *common);
common->scaleTimeOptions(options);
options->finish();
}