From 701b99ecd70ac472aa53c8b2317af44def4f9670 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Spitzm=C3=BCller?= Date: Thu, 6 Jan 2005 13:48:13 +0000 Subject: [PATCH] float2string #4 (Spacing) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9445 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ChangeLog | 16 ++++++++ src/ParagraphParameters.C | 2 +- src/Spacing.C | 61 +++++++++++++++++----------- src/Spacing.h | 12 +++--- src/bufferparams.C | 3 +- src/frontends/qt2/ChangeLog | 5 +++ src/frontends/qt2/QDocument.C | 8 ++-- src/frontends/qt2/QParagraph.C | 3 +- src/frontends/xforms/ChangeLog | 5 +++ src/frontends/xforms/FormDocument.C | 2 +- src/frontends/xforms/FormParagraph.C | 4 +- src/lyxlayout.C | 2 +- src/rowpainter.C | 4 +- src/tex2lyx/ChangeLog | 4 ++ src/tex2lyx/Spacing.h | 6 ++- src/text.C | 2 +- src/text3.C | 10 ++--- 17 files changed, 98 insertions(+), 51 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 7614d484be..10e6a6481c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,19 @@ +2005-01-06 Jürgen Spitzmüller + + * Spacing.[Ch]: New method getValueAsString(). + + * Spacing.[Ch]: + * bufferparams.C: + * ParagraphParameters.C: + * lyxlayout.C: + * text.C: + * text3.C: store/read spacing value as string. + + * rowpainter.C: change float value (spacing_val) to double. + + * bufferparams.C: add Spacing::Other to spacetranslator (fixes + broken custom document spacing). + 2005-01-05 Lars Gullik Bjonnes * lyxfunc.C (getStatus): moved from lyxfunc.C put into anon diff --git a/src/ParagraphParameters.C b/src/ParagraphParameters.C index 52c3385461..d93e07cbb6 100644 --- a/src/ParagraphParameters.C +++ b/src/ParagraphParameters.C @@ -223,7 +223,7 @@ void ParagraphParameters::read(LyXLex & lex) } else if (tmp == "other") { lex.next(); spacing(Spacing(Spacing::Other, - lex.getFloat())); + lex.getString())); } else { lex.printError("Unknown spacing token: '$$Token'"); } diff --git a/src/Spacing.C b/src/Spacing.C index 8c5d26a155..bc9ec91ca5 100644 --- a/src/Spacing.C +++ b/src/Spacing.C @@ -12,12 +12,15 @@ #include #include "Spacing.h" +#include "support/lstrings.h" +#include "support/tostr.h" #include #include -using std::ios; -using std::istringstream; +using lyx::support::strToDbl; + +//using std::ios; using std::ostream; using std::ostringstream; using std::string; @@ -26,39 +29,51 @@ using std::string; string const Spacing::spacing_string[] = {"single", "onehalf", "double", "other"}; -float Spacing::getValue() const + +string const Spacing::getValueAsString() const { switch (space) { case Default: // nothing special should happen with this... - case Single: return 1.0; - case Onehalf: return 1.25; - case Double: return 1.667; + case Single: return "1.0"; + case Onehalf: return "1.25"; + case Double: return "1.667"; case Other: return value; } - return 1.0; + return "1.0"; +} + + +double Spacing::getValue() const +{ + return strToDbl(getValueAsString()); } void Spacing::set(Spacing::Space sp, float val) { - space = sp; - if (sp == Other) { - switch (int(val * 1000 + 0.5)) { - case 1000: space = Single; break; - case 1250: space = Onehalf; break; - case 1667: space = Double; break; - default: value = val; break; - } - } + set(sp, tostr(val)); } void Spacing::set(Spacing::Space sp, string const & val) { - float fval = 0.0; - istringstream istr(val); - istr >> fval; - set(sp, fval); + space = sp; + if (sp == Other) { + switch (int(strToDbl(val) * 1000 + 0.5)) { + case 1000: + space = Single; + break; + case 1250: + space = Onehalf; + break; + case 1667: + space = Double; + break; + default: + value = val; + break; + } + } } @@ -69,10 +84,8 @@ void Spacing::writeFile(ostream & os, bool para) const string cmd = para ? "\\paragraph_spacing " : "\\spacing "; if (getSpace() == Spacing::Other) { - os.setf(ios::showpoint|ios::fixed); - os.precision(2); os << cmd << spacing_string[getSpace()] - << ' ' << getValue() << "\n"; + << ' ' << getValueAsString() << "\n"; } else { os << cmd << spacing_string[getSpace()] << "\n"; } @@ -93,7 +106,7 @@ string const Spacing::writeEnvirBegin() const { ostringstream ost; ost << "\\begin{spacing}{" - << getValue() << '}'; + << getValueAsString() << '}'; return ost.str(); } } diff --git a/src/Spacing.h b/src/Spacing.h index 495a97d16a..5c9d2c6534 100644 --- a/src/Spacing.h +++ b/src/Spacing.h @@ -33,7 +33,7 @@ public: Default }; /// - Spacing() : space(Default), value(1.0) {} + Spacing() : space(Default), value("1.0") {} /// Spacing(Spacing::Space sp, float val = 1.0) { set(sp, val); @@ -46,13 +46,15 @@ public: return space == Default; } /// - float getValue() const; + std::string const getValueAsString() const; + /// + double getValue() const; /// Spacing::Space getSpace() const { return space; } /// void set(Spacing::Space sp, float val = 1.0); /// - void set(Spacing::Space sp, std::string const & val) ; + void set(Spacing::Space sp, std::string const & val); /// void writeFile(std::ostream &, bool para = false) const; /// @@ -64,7 +66,7 @@ private: /// Space space; /// - float value; + std::string value; /// names of line spacing static std::string const spacing_string[]; }; @@ -75,7 +77,7 @@ inline bool operator==(Spacing const & a, Spacing const & b) { return a.getSpace() == b.getSpace() - && a.getValue() == b.getValue(); + && a.getValueAsString() == b.getValueAsString(); } /// diff --git a/src/bufferparams.C b/src/bufferparams.C index 7629623a86..d173469581 100644 --- a/src/bufferparams.C +++ b/src/bufferparams.C @@ -263,6 +263,7 @@ SpaceTranslator const init_spacetranslator() translator.addPair("single", Spacing::Single); translator.addPair("onehalf", Spacing::Onehalf); translator.addPair("double", Spacing::Double); + translator.addPair("other", Spacing::Other); return translator; } @@ -583,7 +584,7 @@ string const BufferParams::readToken(LyXLex & lex, string const & token) } else if (token == "\\spacing") { string nspacing; lex >> nspacing; - float tmp_val = 0.0; + string tmp_val; if (nspacing == "other") { lex >> tmp_val; } diff --git a/src/frontends/qt2/ChangeLog b/src/frontends/qt2/ChangeLog index 96f5b654a1..1cb174c62e 100644 --- a/src/frontends/qt2/ChangeLog +++ b/src/frontends/qt2/ChangeLog @@ -1,3 +1,8 @@ +2005-01-06 Jürgen Spitzmüller + + * QDocument.C: + * QParagraph.C: store all float/double values as strings. + 2005-01-05 Lars Gullik Bjonnes * ui/moc/Makefile.am (libqt2uimoc_la_LINK): improve link trick diff --git a/src/frontends/qt2/QDocument.C b/src/frontends/qt2/QDocument.C index 493ed0e1dd..4c77698888 100644 --- a/src/frontends/qt2/QDocument.C +++ b/src/frontends/qt2/QDocument.C @@ -316,9 +316,7 @@ void QDocument::apply() break; case 3: params.spacing().set(Spacing::Other, - dialog_->textLayoutModule-> - lspacingLE->text().toFloat() - ); + fromqstr(dialog_->textLayoutModule->lspacingLE->text())); break; } @@ -567,9 +565,9 @@ void QDocument::update_contents() dialog_->textLayoutModule->lspacingCO->setCurrentItem(nitem); if (params.spacing().getSpace() == Spacing::Other) { dialog_->textLayoutModule->lspacingLE->setText( - toqstr(tostr(params.spacing().getValue()))); - dialog_->setLSpacing(3); + toqstr(params.spacing().getValueAsString())); } + dialog_->setLSpacing(nitem); if (params.paragraph_separation == BufferParams::PARSEP_INDENT) { diff --git a/src/frontends/qt2/QParagraph.C b/src/frontends/qt2/QParagraph.C index 6cb268f65f..a6c27203be 100644 --- a/src/frontends/qt2/QParagraph.C +++ b/src/frontends/qt2/QParagraph.C @@ -172,8 +172,7 @@ void QParagraph::update_contents() } dialog_->linespacing->setCurrentItem(linespacing); if (space.getSpace() == Spacing::Other) { - string const sp = tostr(space.getValue()); - dialog_->linespacingValue->setText(toqstr(sp)); + dialog_->linespacingValue->setText(toqstr(space.getValueAsString())); dialog_->linespacingValue->setEnabled(true); } else { dialog_->linespacingValue->setText(""); diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index fec6f10a43..834c02402a 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,8 @@ +2005-01-06 Jürgen Spitzmüller + + * FormDocument.C: + * FormParagraph.C: store all float/double values as strings. + 2005-01-05 Lars Gullik Bjonnes * pch.h: remove duplicate entries diff --git a/src/frontends/xforms/FormDocument.C b/src/frontends/xforms/FormDocument.C index 21a5dfaeca..e84100896b 100644 --- a/src/frontends/xforms/FormDocument.C +++ b/src/frontends/xforms/FormDocument.C @@ -1173,7 +1173,7 @@ void FormDocument::class_update(BufferParams const & params) bool const spacing_input = pos == 4; setEnabled(class_->input_spacing, spacing_input); - string const input = spacing_input ? tostr(params.spacing().getValue()) : string(); + string const input = spacing_input ? params.spacing().getValueAsString() : string(); fl_set_input(class_->input_spacing, input.c_str()); } diff --git a/src/frontends/xforms/FormParagraph.C b/src/frontends/xforms/FormParagraph.C index 6224a88ffa..f2128a43a4 100644 --- a/src/frontends/xforms/FormParagraph.C +++ b/src/frontends/xforms/FormParagraph.C @@ -266,8 +266,8 @@ void FormParagraph::update() bool const spacing_other = space.getSpace() == Spacing::Other; setEnabled(dialog_->input_linespacing, spacing_other); if (spacing_other) { - string const sp = tostr(space.getValue()); - fl_set_input(dialog_->input_linespacing, sp.c_str()); + fl_set_input(dialog_->input_linespacing, + space.getValueAsString().c_str()); } else { fl_set_input(dialog_->input_linespacing, ""); } diff --git a/src/lyxlayout.C b/src/lyxlayout.C index 4067415a56..037b0a4d44 100644 --- a/src/lyxlayout.C +++ b/src/lyxlayout.C @@ -785,7 +785,7 @@ void LyXLayout::readSpacing(LyXLex & lexrc) break; case ST_OTHER: lexrc.next(); - spacing.set(Spacing::Other, lexrc.getFloat()); + spacing.set(Spacing::Other, lexrc.getString()); break; } } diff --git a/src/rowpainter.C b/src/rowpainter.C index c1cecb6351..3f9994d101 100644 --- a/src/rowpainter.C +++ b/src/rowpainter.C @@ -509,7 +509,7 @@ void RowPainter::paintFirst() // the top. if (layout->counter == "chapter") { if (buffer.params().secnumdepth >= 0) { - float spacing_val = 1.0; + double spacing_val = 1.0; if (!parparams.spacing().isDefault()) { spacing_val = parparams.spacing().getValue(); } else { @@ -550,7 +550,7 @@ void RowPainter::paintFirst() LyXFont font = getLabelFont(); if (!par_.getLabelstring().empty()) { string const str = par_.getLabelstring(); - float spacing_val = 1.0; + double spacing_val = 1.0; if (!parparams.spacing().isDefault()) { spacing_val = parparams.spacing().getValue(); } else { diff --git a/src/tex2lyx/ChangeLog b/src/tex2lyx/ChangeLog index 40b8d8b5ea..f8315f8566 100644 --- a/src/tex2lyx/ChangeLog +++ b/src/tex2lyx/ChangeLog @@ -1,3 +1,7 @@ +2005-01-06 Jürgen Spitzmüller + + * Spacing.h: adapt dummy file to the changes in src/Spacing.h. + 2005-01-04 Georg Baum * preamble.C (parse_preamble): handle second optional arg of diff --git a/src/tex2lyx/Spacing.h b/src/tex2lyx/Spacing.h index cf1faa59a2..fb27db284a 100644 --- a/src/tex2lyx/Spacing.h +++ b/src/tex2lyx/Spacing.h @@ -16,6 +16,8 @@ #ifndef SPACING_H #define SPACING_H +#include + class Spacing { public: /// @@ -26,8 +28,10 @@ public: Other, Default }; - + /// void set(Spacing::Space, float = 1.0) {} + /// + void set(Spacing::Space sp, std::string const & val) {} }; #endif // NOT SPACING_H diff --git a/src/text.C b/src/text.C index 8b1cde513f..ed8801ee00 100644 --- a/src/text.C +++ b/src/text.C @@ -2134,7 +2134,7 @@ string LyXText::currentState(LCursor & cur) os << _("Double"); break; case Spacing::Other: - os << _("Other (") << spacing.getValue() << ')'; + os << _("Other (") << spacing.getValueAsString() << ')'; break; case Spacing::Default: // should never happen, do nothing diff --git a/src/text3.C b/src/text3.C index 7d212eb560..479216bda0 100644 --- a/src/text3.C +++ b/src/text3.C @@ -753,15 +753,15 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) case LFUN_PARAGRAPH_SPACING: { Paragraph & par = cur.paragraph(); Spacing::Space cur_spacing = par.params().spacing().getSpace(); - float cur_value = 1.0; + string cur_value = "1.0"; if (cur_spacing == Spacing::Other) - cur_value = par.params().spacing().getValue(); + cur_value = par.params().spacing().getValueAsString(); istringstream is(cmd.argument); string tmp; is >> tmp; Spacing::Space new_spacing = cur_spacing; - float new_value = cur_value; + string new_value = cur_value; if (tmp.empty()) { lyxerr << "Missing argument to `paragraph-spacing'" << endl; @@ -773,10 +773,10 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd) new_spacing = Spacing::Double; } else if (tmp == "other") { new_spacing = Spacing::Other; - float tmpval = 0.0; + string tmpval = "0.0"; is >> tmpval; lyxerr << "new_value = " << tmpval << endl; - if (tmpval != 0.0) + if (tmpval != "0.0") new_value = tmpval; } else if (tmp == "default") { new_spacing = Spacing::Default; -- 2.39.2