#include "ParagraphParameters.h"
#include "buffer.h"
-#include "BufferView.h"
#include "gettext.h"
#include "lyxlayout.h"
#include "lyxlex.h"
#include "lyxtext.h"
#include "paragraph.h"
-#include "ParameterStruct.h"
#include "tex-strings.h"
-#include "frontends/LyXView.h"
-
#include "support/lstrings.h"
-#include "support/std_sstream.h"
-using lyx::support::rtrim;
+#include <sstream>
+
+namespace lyx {
+
+using support::rtrim;
using std::istringstream;
using std::ostream;
using std::string;
-// Initialize static member var.
-ShareContainer<ParameterStruct> ParagraphParameters::container;
-
-ParagraphParameters::ParagraphParameters()
+static int findToken(char const * const str[], string const & search_token)
{
- ParameterStruct tmp;
- set_from_struct(tmp);
+ return search_token == "default" ?
+ 0 :
+ support::findToken(str, search_token);
}
-void ParagraphParameters::clear()
-{
- ParameterStruct tmp(*param);
- tmp.spacing.set(Spacing::Default);
- tmp.align = LYX_ALIGN_LAYOUT;
- tmp.depth = 0;
- tmp.noindent = false;
- tmp.labelstring.erase();
- tmp.labelwidthstring.erase();
- tmp.start_of_appendix = false;
- set_from_struct(tmp);
-}
+ParagraphParameters::ParagraphParameters()
+ : noindent_(false),
+ start_of_appendix_(false), appendix_(false),
+ align_(LYX_ALIGN_LAYOUT), depth_(0)
+{}
-ParagraphParameters::depth_type ParagraphParameters::depth() const
+void ParagraphParameters::clear()
{
- return param->depth;
+ operator=(ParagraphParameters());
}
-bool ParagraphParameters::sameLayout(ParagraphParameters const & pp) const
+depth_type ParagraphParameters::depth() const
{
- return param->align == pp.param->align &&
- param->spacing == pp.param->spacing &&
- param->noindent == pp.param->noindent &&
- param->depth == pp.param->depth;
+ return depth_;
}
-void ParagraphParameters::set_from_struct(ParameterStruct const & ps)
+bool ParagraphParameters::sameLayout(ParagraphParameters const & pp) const
{
- // get new param from container with tmp as template
- param = container.get(ps);
+ return align_ == pp.align_
+ && spacing_ == pp.spacing_
+ && noindent_ == pp.noindent_
+ && depth_ == pp.depth_;
}
Spacing const & ParagraphParameters::spacing() const
{
- return param->spacing;
+ return spacing_;
}
void ParagraphParameters::spacing(Spacing const & s)
{
- ParameterStruct tmp(*param);
- tmp.spacing = s;
- set_from_struct(tmp);
+ spacing_ = s;
}
bool ParagraphParameters::noindent() const
{
- return param->noindent;
+ return noindent_;
}
void ParagraphParameters::noindent(bool ni)
{
- ParameterStruct tmp(*param);
- tmp.noindent = ni;
- set_from_struct(tmp);
+ noindent_ = ni;
}
LyXAlignment ParagraphParameters::align() const
{
- return param->align;
+ return align_;
}
void ParagraphParameters::align(LyXAlignment la)
{
- ParameterStruct tmp(*param);
- tmp.align = la;
- set_from_struct(tmp);
+ align_ = la;
}
void ParagraphParameters::depth(depth_type d)
{
- ParameterStruct tmp(*param);
- tmp.depth = d;
- set_from_struct(tmp);
+ depth_ = d;
}
bool ParagraphParameters::startOfAppendix() const
{
- return param->start_of_appendix;
+ return start_of_appendix_;
}
void ParagraphParameters::startOfAppendix(bool soa)
{
- ParameterStruct tmp(*param);
- tmp.start_of_appendix = soa;
- set_from_struct(tmp);
+ start_of_appendix_ = soa;
}
bool ParagraphParameters::appendix() const
{
- return param->appendix;
+ return appendix_;
}
void ParagraphParameters::appendix(bool a)
{
- ParameterStruct tmp(*param);
- tmp.appendix = a;
- set_from_struct(tmp);
+ appendix_ = a;
}
-string const & ParagraphParameters::labelString() const
+docstring const & ParagraphParameters::labelString() const
{
- return param->labelstring;
+ return labelstring_;
}
-void ParagraphParameters::labelString(string const & ls)
+void ParagraphParameters::labelString(docstring const & ls)
{
- ParameterStruct tmp(*param);
- tmp.labelstring = ls;
- set_from_struct(tmp);
+ labelstring_ = ls;
}
-string const & ParagraphParameters::labelWidthString() const
+docstring const & ParagraphParameters::labelWidthString() const
{
- return param->labelwidthstring;
+ return labelwidthstring_;
}
-void ParagraphParameters::labelWidthString(string const & lws)
+void ParagraphParameters::labelWidthString(docstring const & lws)
{
- ParameterStruct tmp(*param);
- tmp.labelwidthstring = lws;
- set_from_struct(tmp);
+ labelwidthstring_ = lws;
}
LyXLength const & ParagraphParameters::leftIndent() const
{
- return param->leftindent;
+ return leftindent_;
}
void ParagraphParameters::leftIndent(LyXLength const & li)
{
- ParameterStruct tmp(*param);
- tmp.leftindent = li;
- set_from_struct(tmp);
+ leftindent_ = li;
}
if (token == "\\noindent") {
noindent(true);
} else if (token == "\\leftindent") {
- lex.nextToken();
+ lex.next();
LyXLength value(lex.getString());
leftIndent(value);
} else if (token == "\\start_of_appendix") {
} else if (tmp == "other") {
lex.next();
spacing(Spacing(Spacing::Other,
- lex.getFloat()));
+ lex.getString()));
} else {
lex.printError("Unknown spacing token: '$$Token'");
}
} else if (token == "\\align") {
- int tmpret = lex.findToken(string_align);
+ lex.next();
+ int tmpret = findToken(string_align, lex.getString());
if (tmpret == -1)
++tmpret;
align(LyXAlignment(1 << tmpret));
} else if (token == "\\labelwidthstring") {
lex.eatLine();
- labelWidthString(lex.getString());
+ labelWidthString(lex.getDocString());
} else {
lex.pushToken(token);
break;
// The labelwidth string used in lists.
if (!labelWidthString().empty())
os << "\\labelwidthstring "
- << labelWidthString() << '\n';
+ << to_utf8(labelWidthString()) << '\n';
// Start of appendix?
if (startOfAppendix())
- os << "\\start_of_appendix ";
+ os << "\\start_of_appendix\n";
// Noindent?
if (noindent())
- os << "\\noindent ";
+ os << "\\noindent\n";
// Do we have a manual left indent?
if (!leftIndent().zero())
- os << "\\leftindent " << leftIndent().asString()
- << ' ';
+ os << "\\leftindent " << leftIndent().asString() << '\n';
// Alignment?
if (align() != LYX_ALIGN_LAYOUT) {
case LYX_ALIGN_CENTER: h = 3; break;
default: h = 0; break;
}
- os << "\\align " << string_align[h] << ' ';
+ os << "\\align " << string_align[h] << '\n';
}
}
params.write(os);
// Is alignment possible
- os << '\n' << "\\alignpossible " << layout->alignpossible << '\n';
+ os << "\\alignpossible " << layout->alignpossible << '\n';
/// set default alignment
os << "\\aligndefault " << layout->align << '\n';
- /// is paragraph in inset
- os << "\\ininset " << (par.inInset()?1:0) << '\n';
+ /// paragraph is always in inset. This is redundant.
+ os << "\\ininset " << 1 << '\n';
data = os.str();
}
+
+
+/*
+bool operator==(ParagraphParameeters const & ps1,
+ ParagraphParameeters const & ps2)
+{
+ return
+ ps1.spacing == ps2.spacing
+ && ps1.noindent == ps2.noindent
+ && ps1.align == ps2.align
+ && ps1.depth == ps2.depth
+ && ps1.start_of_appendix == ps2.start_of_appendix
+ && ps1.appendix == ps2.appendix
+ && ps1.labelstring == ps2.labelstring
+ && ps1.labelwidthstring == ps2.labelwidthstring
+ && ps1.leftindent == ps2.leftindent;
+}
+*/
+
+
+} // namespace lyx