]> git.lyx.org Git - lyx.git/blobdiff - src/vspace.C
* src/insets/insetbititem.C:
[lyx.git] / src / vspace.C
index 2c9e4a9074169c07ff5be13cbe724d6c098c392f..c1fdbf71ad93d5747f5dc0a219b58b96658fdd18 100644 (file)
 #include "buffer.h"
 #include "bufferparams.h"
 #include "BufferView.h"
+#include "gettext.h"
 #include "lengthcommon.h"
 #include "lyxtext.h"
 
+#include "support/convert.h"
 #include "support/lstrings.h"
 
-using lyx::support::compare;
-using lyx::support::isStrDbl;
-using lyx::support::ltrim;
-using lyx::support::prefixIs;
-using lyx::support::rtrim;
-using lyx::support::strToDbl;
+
+namespace lyx {
+
+using support::compare;
+using support::isStrDbl;
+using support::ltrim;
+using support::prefixIs;
+using support::rtrim;
 
 using std::string;
 
@@ -83,12 +87,12 @@ char nextToken(string & data)
                lyx_advance(data, 1);
                return '+';
        }
-               
+
        if (prefixIs(data, "plus")) {
                lyx_advance(data, 4);
                return '+';
        }
-       
+
        if (data[0] == '-') {
                lyx_advance(data, 1);
                return '-';
@@ -117,7 +121,7 @@ char nextToken(string & data)
                lyx_advance(data, i);
 
                if (isStrDbl(buffer)) {
-                       number[number_index] = strToDbl(buffer);
+                       number[number_index] = convert<double>(buffer);
                        ++number_index;
                        return 'n';
                }
@@ -193,7 +197,7 @@ LaTeXLength table[] = {
 
 const char * stringFromUnit(int unit)
 {
-       if (unit < 0 || unit >= num_units)
+       if (unit < 0 || unit > num_units)
                return 0;
        return unit_name[unit];
 }
@@ -337,7 +341,7 @@ bool isValidLength(string const & data, LyXLength * result)
 //
 
 VSpace::VSpace()
-       : kind_(NONE), len_(), keep_(false)
+       : kind_(DEFSKIP), len_(), keep_(false)
 {}
 
 
@@ -357,7 +361,7 @@ VSpace::VSpace(LyXGlueLength const & l)
 
 
 VSpace::VSpace(string const & data)
-       : kind_(NONE), len_(), keep_(false)
+       : kind_(DEFSKIP), len_(), keep_(false)
 {
        if (data.empty())
                return;
@@ -388,7 +392,7 @@ VSpace::VSpace(string const & data)
                // without units in added_space_top/bottom.
                // Let unit default to centimeters here.
                kind_ = LENGTH;
-               len_  = LyXGlueLength(LyXLength(strToDbl(input), LyXLength::CM));
+               len_  = LyXGlueLength(LyXLength(convert<double>(input), LyXLength::CM));
        }
 }
 
@@ -436,7 +440,6 @@ string const VSpace::asLyXCommand() const
 {
        string result;
        switch (kind_) {
-       case NONE:      break;
        case DEFSKIP:   result = "defskip";      break;
        case SMALLSKIP: result = "smallskip";    break;
        case MEDSKIP:   result = "medskip";      break;
@@ -444,7 +447,7 @@ string const VSpace::asLyXCommand() const
        case VFILL:     result = "vfill";        break;
        case LENGTH:    result = len_.asString(); break;
        }
-       if (keep_ && kind_ != NONE && kind_ != DEFSKIP)
+       if (keep_)
                result += '*';
        return result;
 }
@@ -453,9 +456,6 @@ string const VSpace::asLyXCommand() const
 string const VSpace::asLatexCommand(BufferParams const & params) const
 {
        switch (kind_) {
-       case NONE:
-               return string();
-
        case DEFSKIP:
                return params.getDefSkip().asLatexCommand(params);
 
@@ -471,25 +471,53 @@ string const VSpace::asLatexCommand(BufferParams const & params) const
        case VFILL:
                return keep_ ? "\\vspace*{\\fill}" : "\\vfill{}";
 
-       case LENGTH: 
+       case LENGTH:
                return keep_ ? "\\vspace*{" + len_.asLatexString() + '}'
                        : "\\vspace{" + len_.asLatexString() + '}';
+
+       default:
+               BOOST_ASSERT(false);
+               return string();
        }
 }
 
 
+docstring const VSpace::asGUIName() const
+{
+       docstring result;
+       switch (kind_) {
+       case DEFSKIP:
+               result = _("Default skip");
+               break;
+       case SMALLSKIP:
+               result = _("Small skip");
+               break;
+       case MEDSKIP:
+               result = _("Medium skip");
+               break;
+       case BIGSKIP:
+               result = _("Big skip");
+               break;
+       case VFILL:
+               result = _("Vertical fill");
+               break;
+       case LENGTH:
+               result = from_ascii(len_.asString());
+               break;
+       }
+       if (keep_)
+               result += ", " + _("protected");
+       return result;
+}
+
 
 int VSpace::inPixels(BufferView const & bv) const
 {
        // Height of a normal line in pixels (zoom factor considered)
-       int const default_height = defaultRowHeight(); 
+       int const default_height = defaultRowHeight();
 
        switch (kind_) {
 
-       case NONE:
-               // value for this is already set
-               return 0;
-
        case DEFSKIP:
                return bv.buffer()->params().getDefSkip().inPixels(bv);
 
@@ -510,5 +538,12 @@ int VSpace::inPixels(BufferView const & bv) const
 
        case LENGTH:
                return len_.len().inPixels(bv.workWidth());
+
+       default:
+               BOOST_ASSERT(false);
+               return 0;
        }
 }
+
+
+} // namespace lyx