Sort all includes in src/gromacs
[alexxy/gromacs.git] / src / gromacs / onlinehelp / helpformat.h
index 98cea4d3852efc5b6de6ce8f3a6d2307a0a788bc..98df196f449113da271fa0fb42a2efce466da753 100644 (file)
@@ -1,10 +1,10 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2012, by the GROMACS development team, led by
- * David van der Spoel, Berk Hess, Erik Lindahl, and including many
- * others, as listed in the AUTHORS file in the top-level source
- * directory and at http://www.gromacs.org.
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+ * and including many others, as listed in the AUTHORS file in the
+ * top-level source directory and at http://www.gromacs.org.
  *
  * GROMACS is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
 
 #include <string>
 
-#include "../utility/common.h"
+#include "gromacs/utility/common.h"
 
 namespace gmx
 {
 
 class File;
+class HelpWriterContext;
 
 /*! \libinternal \brief
  * Formats rows of a table for text output.
@@ -127,6 +128,23 @@ class TextTableFormatter
          * Does not throw.
          */
         void setFirstColumnIndent(int indent);
+        /*! \brief
+         * Enables folding the last column to separate lines if it overflows.
+         *
+         * \param[in]  indent  Number of spaces to use for indenting the lines.
+         *
+         * If called with `indent >= 0`, the last column for each row is
+         * treated specially: if it contains more lines than the other columns,
+         * and if the text would fit more compactly as separate lines after the
+         * row, then the whole last column is written after the row with the
+         * given \p indent.  The column text then spans the whole space
+         * reserved for the table, making long text fit into a smaller amount
+         * of vertical space.
+         * If not called, the last column is not treates specially.
+         *
+         * Does not throw.
+         */
+        void setFoldLastColumnToNextLine(int indent);
 
         /*! \brief
          * Whether formatRow() has been successfully called.
@@ -164,6 +182,19 @@ class TextTableFormatter
          * fits the column.
          */
         void addColumnLine(int index, const std::string &text);
+        /*! \brief
+         * Adds text containing help markup to be printed in a column.
+         *
+         * \param[in]  index     Zero-based column index.
+         * \param[in]  context   Context to use for markup processing.
+         * \param[in]  text      Text to add.
+         *
+         * Works as addColumnLine(), except that it uses
+         * HelpWriterContext::substituteMarkupAndWrapToVector() to process
+         * markup in the input text instead of just wrapping it as plain text.
+         */
+        void addColumnHelpTextBlock(int index, const HelpWriterContext &context,
+                                    const std::string &text);
         /*! \brief
          * Sets the first line to which text is printed for a column.
          *
@@ -195,20 +226,6 @@ class TextTableFormatter
          */
         std::string formatRow();
 
-        /*! \brief
-         * Returns the last line on which column \p index has text.
-         *
-         * \param[in] index  Zero-based column index.
-         * \returns   Last line index (zero-based) on which \p index has text.
-         *
-         * The return value is the sum of the number of lines added with
-         * addColumnLine() (taking into account possible wrapping) and the line
-         * offset set with setColumnFirstLineOffset().
-         *
-         * Does not throw.
-         */
-        int lastColumnLine(int index) const;
-
     private:
         class Impl;