}
+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;
swap(cell_info[i], old[i - 1]);
if (bp.trackChanges)
- // FIXME: Change Tracking (MG)
for (col_type j = 0; j < columns_; ++j)
cell_info[row + 1][j].inset->setChange(Change(Change::INSERTED));
cell_info.insert(cell_info.begin() + row, cell_info[row]);
if (bp.trackChanges)
- // FIXME: Change Tracking (MG)
for (col_type j = 0; j < columns_; ++j)
cell_info[row + 1][j].inset->setChange(Change(Change::INSERTED));
//++column;
for (row_type i = 0; i < rows_; ++i) {
cell_info[i][column + 1].inset->clear();
- // FIXME: Change Tracking (MG)
if (bp.trackChanges)
cell_info[i][column + 1].inset->setChange(Change(Change::INSERTED));
}
cell_info[i].insert(cell_info[i].begin() + column, cell_info[i][column]);
if (bp.trackChanges)
- // FIXME: Change Tracking (MG)
for (row_type i = 0; i < rows_; ++i)
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), '|');
}
}
-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;
if (isMultiColumn(cell)) {
os << "\\multicolumn{" << cells_in_multicolumn(cell) << "}{";
if (!cellinfo_of_cell(cell).align_special.empty()) {
- os << from_ascii(cellinfo_of_cell(cell).align_special)
- << "}{";
+ os << cellinfo_of_cell(cell).align_special << "}{";
} else {
if (leftLine(cell) &&
(isFirstCellInRow(cell) ||
os << "\\addlinespace\n";
else
os << "\\noalign{\\vskip\\doublerulesep}\n";
+ ++ret;
} else if(!row_info[i].top_space.zero()) {
if (use_booktabs)
os << "\\addlinespace["
os << "\\addlinespace\n";
else
os << "\\noalign{\\vskip\\doublerulesep}\n";
+ ++ret;
} else if (!row_info[i].interline_space.zero()) {
if (use_booktabs)
os << "\\addlinespace["
os << "\\begin{tabular}{";
for (col_type i = 0; i < columns_; ++i) {
if (!column_info[i].align_special.empty()) {
- os << from_ascii(column_info[i].align_special);
+ os << column_info[i].align_special;
} else {
if (!use_booktabs && column_info[i].left_line)
os << '|';
}
-int LyXTabular::asciiTopHLine(odocstream & os, row_type row,
- vector<unsigned int> const & clen) const
+bool LyXTabular::plaintextTopHLine(odocstream & os, row_type row,
+ vector<unsigned int> const & clen) const
{
idx_type const fcell = getFirstCellInRow(row);
idx_type const n = numberOfCellsInRow(fcell) + fcell;
}
}
if (!tmp)
- return 0;
+ return false;
char_type ch;
for (idx_type i = fcell; i < n; ++i) {
}
}
os << endl;
- return 1;
+ return true;
}
-int LyXTabular::asciiBottomHLine(odocstream & os, row_type row,
- vector<unsigned int> const & clen) const
+bool LyXTabular::plaintextBottomHLine(odocstream & os, row_type row,
+ vector<unsigned int> const & clen) const
{
idx_type const fcell = getFirstCellInRow(row);
idx_type const n = numberOfCellsInRow(fcell) + fcell;
}
}
if (!tmp)
- return 0;
+ return false;
char_type ch;
for (idx_type i = fcell; i < n; ++i) {
}
}
os << endl;
- return 1;
+ return true;
}
-int LyXTabular::asciiPrintCell(Buffer const & buf, odocstream & os,
+void LyXTabular::plaintextPrintCell(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
{
odocstringstream sstr;
- int const ret = getCellInset(cell)->plaintext(buf, sstr, runparams);
+ getCellInset(cell)->plaintext(buf, sstr, runparams);
if (onlydata) {
os << sstr.str();
- return ret;
+ return;
}
if (leftLine(cell))
os << " |";
else
os << " ";
-
- return ret;
}
-int LyXTabular::plaintext(Buffer const & buf, odocstream & os,
- OutputParams const & runparams,
- int const depth,
- bool onlydata, unsigned char delim) const
+void LyXTabular::plaintext(Buffer const & buf, odocstream & os,
+ OutputParams const & runparams, int const depth,
+ bool onlydata, unsigned char delim) const
{
- int ret = 0;
-
// first calculate the width of the single columns
vector<unsigned int> clen(columns_);
}
idx_type cell = 0;
for (row_type i = 0; i < rows_; ++i) {
- if (!onlydata && asciiTopHLine(os, i, clen))
+ if (!onlydata && plaintextTopHLine(os, i, clen))
os << docstring(depth * 2, ' ');
for (col_type j = 0; j < columns_; ++j) {
if (isPartOfMultiColumn(i, j))
continue;
if (onlydata && j > 0)
os << delim;
- ret += asciiPrintCell(buf, os, runparams,
- cell, i, j, clen, onlydata);
+ plaintextPrintCell(buf, os, runparams,
+ cell, i, j, clen, onlydata);
++cell;
}
os << endl;
if (!onlydata) {
os << docstring(depth * 2, ' ');
- if (asciiBottomHLine(os, i, clen))
+ if (plaintextBottomHLine(os, i, clen))
os << docstring(depth * 2, ' ');
}
}
- return ret;
}
for (idx_type cell = 0, n = getNumberOfCells(); cell < n; ++cell)
if (getCellInset(cell).get() == inset) {
- lyxerr[Debug::INSETTEXT] << "LyXTabular::getCellFromInset: "
+ LYXERR(Debug::INSETTEXT) << "LyXTabular::getCellFromInset: "
<< "cell=" << cell << endl;
return cell;
}