#include <sstream>
-using lyx::support::ltrim;
-using lyx::support::prefixIs;
-using lyx::support::rtrim;
-using lyx::support::suffixIs;
+
+namespace lyx {
+
+using support::prefixIs;
+using support::ltrim;
+using support::rtrim;
+using support::suffixIs;
using boost::shared_ptr;
using boost::dynamic_pointer_cast;
}
+template <>
+string const write_attribute(string const & name, docstring const & t)
+{
+ return t.empty() ? string() : " " + name + "=\"" + to_utf8(t) + "\"";
+}
+
+
template <>
string const write_attribute(string const & name, bool const & b)
{
}
+bool getTokenValue(string const & str, char const * token, docstring & ret)
+{
+ string tmp;
+ bool const success = getTokenValue(str, token, tmp);
+ ret = from_utf8(tmp);
+ return success;
+}
+
+
bool getTokenValue(string const & str, char const * token, int & num)
{
string tmp;
for (row_type i = row + 2; i < rows_; ++i)
swap(cell_info[i], old[i - 1]);
- if (bp.tracking_changes)
+ if (bp.trackChanges)
for (col_type j = 0; j < columns_; ++j)
- cell_info[row + 1][j].inset->markNew(true);
+ cell_info[row + 1][j].inset->setChange(Change(Change::INSERTED));
set_row_column_number_info();
}
row_info.insert(row_info.begin() + row, row_info[row]);
cell_info.insert(cell_info.begin() + row, cell_info[row]);
- if (bp.tracking_changes)
+ if (bp.trackChanges)
for (col_type j = 0; j < columns_; ++j)
- cell_info[row + 1][j].inset->markNew(true);
+ cell_info[row + 1][j].inset->setChange(Change(Change::INSERTED));
set_row_column_number_info();
}
//++column;
for (row_type i = 0; i < rows_; ++i) {
cell_info[i][column + 1].inset->clear();
- if (bp.tracking_changes)
- cell_info[i][column + 1].inset->markNew(true);
+ if (bp.trackChanges)
+ cell_info[i][column + 1].inset->setChange(Change(Change::INSERTED));
}
fixCellNums();
}
for (row_type i = 0; i < rows_; ++i)
cell_info[i].insert(cell_info[i].begin() + column, cell_info[i][column]);
- if (bp.tracking_changes)
+ if (bp.trackChanges)
for (row_type i = 0; i < rows_; ++i)
- cell_info[i][column + 1].inset->markNew(true);
+ cell_info[i][column + 1].inset->setChange(Change(Change::INSERTED));
fixCellNums();
}
}
-bool LyXTabular::topLine(idx_type const cell, bool const onlycolumn) const
+bool LyXTabular::topLine(idx_type const cell, bool const wholerow) const
{
- if (!onlycolumn && isMultiColumn(cell) &&
+ if (!wholerow && isMultiColumn(cell) &&
!(use_booktabs && row_of_cell(cell) == 0))
return cellinfo_of_cell(cell).top_line;
return row_info[row_of_cell(cell)].top_line;
}
-bool LyXTabular::bottomLine(idx_type const cell, bool onlycolumn) const
+bool LyXTabular::bottomLine(idx_type const cell, bool wholerow) const
{
- if (!onlycolumn && isMultiColumn(cell) &&
+ if (!wholerow && isMultiColumn(cell) &&
!(use_booktabs && isLastRow(cell)))
return cellinfo_of_cell(cell).bottom_line;
return row_info[row_of_cell(cell)].bottom_line;
}
-bool LyXTabular::leftLine(idx_type cell, bool onlycolumn) const
+bool LyXTabular::leftLine(idx_type cell, bool wholecolumn) const
{
if (use_booktabs)
return false;
- if (!onlycolumn && isMultiColumn(cell) &&
+ if (!wholecolumn && isMultiColumn(cell) &&
(isFirstCellInRow(cell) || isMultiColumn(cell-1)))
{
if (cellinfo_of_cell(cell).align_special.empty())
return cellinfo_of_cell(cell).left_line;
- return prefixIs(ltrim(cellinfo_of_cell(cell).align_special), "|");
+ return prefixIs(ltrim(cellinfo_of_cell(cell).align_special), '|');
}
if (column_info[column_of_cell(cell)].align_special.empty())
return column_info[column_of_cell(cell)].left_line;
- return prefixIs(ltrim(column_info[column_of_cell(cell)].align_special), "|");
+ return prefixIs(ltrim(column_info[column_of_cell(cell)].align_special), '|');
}
-bool LyXTabular::rightLine(idx_type cell, bool onlycolumn) const
+bool LyXTabular::rightLine(idx_type cell, bool wholecolumn) const
{
if (use_booktabs)
return false;
- if (!onlycolumn && isMultiColumn(cell) &&
+ if (!wholecolumn && isMultiColumn(cell) &&
(isLastCellInRow(cell) || isMultiColumn(cell + 1)))
{
if (cellinfo_of_cell(cell).align_special.empty())
return cellinfo_of_cell(cell).right_line;
- return suffixIs(rtrim(cellinfo_of_cell(cell).align_special), "|");
+ return suffixIs(rtrim(cellinfo_of_cell(cell).align_special), '|');
}
if (column_info[column_of_cell(cell)].align_special.empty())
return column_info[right_column_of_cell(cell)].right_line;
- return suffixIs(rtrim(column_info[column_of_cell(cell)].align_special), "|");
+ return suffixIs(rtrim(column_info[column_of_cell(cell)].align_special), '|');
}
return;
// merge all paragraphs to one
- BufferParams const & bp =
- inset->getText(0)->bv_owner->buffer()->params();
+ BufferParams const & bp = cur.bv().buffer()->params();
while (inset->paragraphs().size() > 1)
mergeParagraph(bp, inset->paragraphs(), 0);
// reset layout
cur.push(*inset);
// undo information has already been recorded
- inset->getText(0)->setLayout(0, cur.lastpit() + 1,
+ inset->getText(0)->setLayout(*cur.bv().buffer(), 0, cur.lastpit() + 1,
bp.getLyXTextClass().defaultLayoutName());
cur.pop();
}
}
-void LyXTabular::setAlignSpecial(idx_type cell, string const & special,
+void LyXTabular::setAlignSpecial(idx_type cell, docstring const & special,
LyXTabular::Feature what)
{
if (what == SET_SPECIAL_MULTI)
}
-void LyXTabular::setTopLine(idx_type cell, bool line, bool onlycolumn)
+void LyXTabular::setTopLine(idx_type cell, bool line, bool wholerow)
{
row_type const row = row_of_cell(cell);
- if (onlycolumn || !isMultiColumn(cell))
+ if (wholerow || !isMultiColumn(cell))
row_info[row].top_line = line;
else
cellinfo_of_cell(cell).top_line = line;
}
-void LyXTabular::setBottomLine(idx_type cell, bool line, bool onlycolumn)
+void LyXTabular::setBottomLine(idx_type cell, bool line, bool wholerow)
{
- if (onlycolumn || !isMultiColumn(cell))
+ if (wholerow || !isMultiColumn(cell))
row_info[row_of_cell(cell)].bottom_line = line;
else
cellinfo_of_cell(cell).bottom_line = line;
}
-void LyXTabular::setLeftLine(idx_type cell, bool line, bool onlycolumn)
+void LyXTabular::setLeftLine(idx_type cell, bool line, bool wholecolumn)
{
- if (onlycolumn || !isMultiColumn(cell))
+ if (wholecolumn || !isMultiColumn(cell))
column_info[column_of_cell(cell)].left_line = line;
else
cellinfo_of_cell(cell).left_line = line;
}
-void LyXTabular::setRightLine(idx_type cell, bool line, bool onlycolumn)
+void LyXTabular::setRightLine(idx_type cell, bool line, bool wholecolumn)
{
- if (onlycolumn || !isMultiColumn(cell))
+ if (wholecolumn || !isMultiColumn(cell))
column_info[right_column_of_cell(cell)].right_line = line;
else
cellinfo_of_cell(cell).right_line = line;
}
-string const LyXTabular::getAlignSpecial(idx_type cell, int what) const
+docstring const LyXTabular::getAlignSpecial(idx_type cell, int what) const
{
if (what == SET_SPECIAL_MULTI)
return cellinfo_of_cell(cell).align_special;
}
-int LyXTabular::TeXTopHLine(ostream & os, row_type row) const
+int LyXTabular::TeXTopHLine(odocstream & os, row_type row) const
{
// FIXME: assert or return 0 as in TeXBottomHLine()?
BOOST_ASSERT(row != npos);
}
-int LyXTabular::TeXBottomHLine(ostream & os, row_type row) const
+int LyXTabular::TeXBottomHLine(odocstream & os, row_type row) const
{
// FIXME: return 0 or assert as in TeXTopHLine()?
if (row == npos || row >= rows_)
}
-int LyXTabular::TeXCellPreamble(ostream & os, idx_type cell) const
+int LyXTabular::TeXCellPreamble(odocstream & os, idx_type cell) const
{
int ret = 0;
break;
}
os << '{'
- << getPWidth(cell).asLatexString()
+ << from_ascii(getPWidth(cell).asLatexString())
<< '}';
} else {
switch (getAlignment(cell)) {
os << 'b';
break;
}
- os << "]{" << getPWidth(cell).asLatexString() << "}{";
+ os << "]{" << from_ascii(getPWidth(cell).asLatexString())
+ << "}{";
} else if (getUsebox(cell) == BOX_MINIPAGE) {
os << "\\begin{minipage}[";
switch (getVAlignment(cell)) {
os << 'b';
break;
}
- os << "]{" << getPWidth(cell).asLatexString() << "}\n";
+ os << "]{" << from_ascii(getPWidth(cell).asLatexString())
+ << "}\n";
++ret;
}
return ret;
}
-int LyXTabular::TeXCellPostamble(ostream & os, idx_type cell) const
+int LyXTabular::TeXCellPostamble(odocstream & os, idx_type cell) const
{
int ret = 0;
}
-int LyXTabular::TeXLongtableHeaderFooter(ostream & os, Buffer const & buf,
+int LyXTabular::TeXLongtableHeaderFooter(odocstream & os, Buffer const & buf,
OutputParams const & runparams) const
{
if (!is_long_tabular)
}
-int LyXTabular::TeXRow(ostream & os, row_type i, Buffer const & buf,
+int LyXTabular::TeXRow(odocstream & os, row_type i, Buffer const & buf,
OutputParams const & runparams) const
{
idx_type cell = getCellNumber(i, 0);
} else if(!row_info[i].top_space.zero()) {
if (use_booktabs)
os << "\\addlinespace["
- << row_info[i].top_space.asLatexString() << "]\n";
+ << from_ascii(row_info[i].top_space.asLatexString())
+ << "]\n";
else {
os << "\\noalign{\\vskip"
- << row_info[i].top_space.asLatexString() << "}\n";
+ << from_ascii(row_info[i].top_space.asLatexString())
+ << "}\n";
}
++ret;
}
ret += TeXCellPostamble(os, cell);
if (!isLastCellInRow(cell)) { // not last cell in row
- os << "&\n";
- ++ret;
+ os << " & ";
}
++cell;
}
} else if (!row_info[i].bottom_space.zero()) {
if (use_booktabs)
os << "\\addlinespace";
- os << '[' << row_info[i].bottom_space.asLatexString() << ']';
+ os << '['
+ << from_ascii(row_info[i].bottom_space.asLatexString())
+ << ']';
}
os << '\n';
++ret;
} else if (!row_info[i].interline_space.zero()) {
if (use_booktabs)
os << "\\addlinespace["
- << row_info[i].interline_space.asLatexString()
+ << from_ascii(row_info[i].interline_space.asLatexString())
<< "]\n";
else
os << "\\noalign{\\vskip"
- << row_info[i].interline_space.asLatexString()
+ << from_ascii(row_info[i].interline_space.asLatexString())
<< "}\n";
++ret;
}
}
-int LyXTabular::latex(Buffer const & buf, ostream & os,
+int LyXTabular::latex(Buffer const & buf, odocstream & os,
OutputParams const & runparams) const
{
int ret = 0;
break;
}
os << '{'
- << column_info[i].p_width.asLatexString()
+ << from_ascii(column_info[i].p_width.asLatexString())
<< '}';
} else {
switch (column_info[i].alignment) {
}
-int LyXTabular::docbookRow(Buffer const & buf, ostream & os, row_type row,
+int LyXTabular::docbookRow(Buffer const & buf, odocstream & os, row_type row,
OutputParams const & runparams) const
{
int ret = 0;
}
-int LyXTabular::docbook(Buffer const & buf, ostream & os,
+int LyXTabular::docbook(Buffer const & buf, odocstream & os,
OutputParams const & runparams) const
{
int ret = 0;
}
-int LyXTabular::asciiTopHLine(ostream & os, row_type row,
+int LyXTabular::asciiTopHLine(odocstream & os, row_type row,
vector<unsigned int> const & clen) const
{
idx_type const fcell = getFirstCellInRow(row);
if (!tmp)
return 0;
- unsigned char ch;
+ char_type ch;
for (idx_type i = fcell; i < n; ++i) {
if (topLine(i)) {
if (leftLine(i))
while (column < columns_ - 1
&& isPartOfMultiColumn(row, ++column))
len += clen[column] + 4;
- os << string(len, ch);
+ os << docstring(len, ch);
if (topLine(i)) {
if (rightLine(i))
os << "-+";
}
-int LyXTabular::asciiBottomHLine(ostream & os, row_type row,
+int LyXTabular::asciiBottomHLine(odocstream & os, row_type row,
vector<unsigned int> const & clen) const
{
idx_type const fcell = getFirstCellInRow(row);
if (!tmp)
return 0;
- unsigned char ch;
+ char_type ch;
for (idx_type i = fcell; i < n; ++i) {
if (bottomLine(i)) {
if (leftLine(i))
while (column < columns_ -1
&& isPartOfMultiColumn(row, ++column))
len += clen[column] + 4;
- os << string(len, ch);
+ os << docstring(len, ch);
if (bottomLine(i)) {
if (rightLine(i))
os << "-+";
}
-int LyXTabular::asciiPrintCell(Buffer const & buf, ostream & os,
+int LyXTabular::asciiPrintCell(Buffer const & buf, odocstream & os,
OutputParams const & runparams,
idx_type cell, row_type row, col_type column,
vector<unsigned int> const & clen,
bool onlydata) const
{
- ostringstream sstr;
+ odocstringstream sstr;
int const ret = getCellInset(cell)->plaintext(buf, sstr, runparams);
if (onlydata) {
break;
}
- os << string(len1, ' ') << sstr.str() << string(len2, ' ');
+ os << docstring(len1, ' ') << sstr.str()
+ << docstring(len2, ' ');
if (rightLine(cell))
os << " |";
}
-int LyXTabular::plaintext(Buffer const & buf, ostream & os,
+int LyXTabular::plaintext(Buffer const & buf, odocstream & os,
OutputParams const & runparams,
int const depth,
bool onlydata, unsigned char delim) const
idx_type cell = getCellNumber(i, j);
if (isMultiColumnReal(cell))
continue;
- ostringstream sstr;
+ odocstringstream sstr;
getCellInset(cell)->plaintext(buf, sstr, runparams);
if (clen[j] < sstr.str().length())
clen[j] = sstr.str().length();
idx_type cell = getCellNumber(i, j);
if (!isMultiColumnReal(cell) || isPartOfMultiColumn(i, j))
continue;
- ostringstream sstr;
+ odocstringstream sstr;
getCellInset(cell)->plaintext(buf, sstr, runparams);
int len = int(sstr.str().length());
idx_type const n = cells_in_multicolumn(cell);
idx_type cell = 0;
for (row_type i = 0; i < rows_; ++i) {
if (!onlydata && asciiTopHLine(os, i, clen))
- os << string(depth * 2, ' ');
+ os << docstring(depth * 2, ' ');
for (col_type j = 0; j < columns_; ++j) {
if (isPartOfMultiColumn(i, j))
continue;
}
os << endl;
if (!onlydata) {
- os << string(depth * 2, ' ');
+ os << docstring(depth * 2, ' ');
if (asciiBottomHLine(os, i, clen))
- os << string(depth * 2, ' ');
+ os << docstring(depth * 2, ' ');
}
}
return ret;
return BOX_NONE;
}
+
+
+} // namespace lyx