]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetTabular.cpp
Remove dead code.
[lyx.git] / src / insets / InsetTabular.cpp
index 476541f1e221e339038a3fc1775f2d1d39867050..109bcd862cade0a9fb277cc02a21ee9c0c201eed 100644 (file)
@@ -38,6 +38,7 @@
 #include "LyXRC.h"
 #include "MetricsInfo.h"
 #include "OutputParams.h"
+#include "output_xhtml.h"
 #include "Paragraph.h"
 #include "ParagraphParameters.h"
 #include "ParIterator.h"
@@ -1800,8 +1801,6 @@ Tabular::idx_type Tabular::setLTCaption(row_type row, bool what)
                unsetMultiColumn(i);
                // When unsetting a caption row, also all existing
                // captions in this row must be dissolved.
-               lyx::dispatch(FuncRequest(LFUN_LINE_BEGIN));
-               lyx::dispatch(FuncRequest(LFUN_INSET_DISSOLVE, "caption"));
        }
        row_info[row].caption = what;
        return i;
@@ -2634,6 +2633,78 @@ int Tabular::docbook(odocstream & os, OutputParams const & runparams) const
 }
 
 
+docstring Tabular::xhtmlRow(XHTMLStream & xs, row_type row,
+                          OutputParams const & runparams) const
+{
+       docstring ret;
+       idx_type cell = getFirstCellInRow(row);
+
+       xs << StartTag("tr");
+       for (col_type j = 0; j < column_info.size(); ++j) {
+               if (isPartOfMultiColumn(row, j))
+                       continue;
+
+               stringstream attr;
+               attr << "align='";
+               switch (getAlignment(cell)) {
+               case LYX_ALIGN_LEFT:
+                       attr << "left";
+                       break;
+               case LYX_ALIGN_RIGHT:
+                       attr << "right";
+                       break;
+               default:
+                       attr << "center";
+                       break;
+               }
+               attr << "'";
+               attr << " valign='";
+               switch (getVAlignment(cell)) {
+               case LYX_VALIGN_TOP:
+                       attr << "top";
+                       break;
+               case LYX_VALIGN_BOTTOM:
+                       attr << "bottom";
+                       break;
+               case LYX_VALIGN_MIDDLE:
+                       attr << "middle";
+               }
+               attr << "'";
+
+               if (isMultiColumn(cell))
+                       attr << " colspan='" << j + columnSpan(cell) - 1<< "'";
+
+               xs << StartTag("td", attr.str());
+               ret += cellInset(cell)->xhtml(xs, runparams);
+               xs << EndTag("td");
+               ++cell;
+       }
+       xs << EndTag("tr");
+       return ret;
+}
+
+
+docstring Tabular::xhtml(XHTMLStream & xs, OutputParams const & runparams) const
+{
+       docstring ret;
+       xs << StartTag("table");
+
+       // It's unclear to me if we need to mess with the long table stuff. 
+       // We can borrow that too from docbook, if so.
+
+       xs << StartTag("tbody");
+       for (row_type i = 0; i < row_info.size(); ++i) {
+               if (isValidRow(i)) {
+                       ret += xhtmlRow(xs, i, runparams);
+               }
+       }
+       xs << EndTag("tbody");
+       xs << EndTag("table");
+
+       return ret;
+}
+
+
 bool Tabular::plaintextTopHLine(odocstream & os, row_type row,
                                   vector<unsigned int> const & clen) const
 {
@@ -2958,6 +3029,14 @@ docstring InsetTableCell::asString(bool intoInsets)
 }
 
 
+docstring InsetTableCell::xhtml(XHTMLStream & xs, OutputParams const & rp) const
+{
+       if (!isFixedWidth)
+               return InsetText::insetAsXHTML(xs, rp, InsetText::JustText);
+       return InsetText::xhtml(xs, rp);
+}
+
+
 
 /////////////////////////////////////////////////////////////////////
 //
@@ -3322,7 +3401,7 @@ void InsetTabular::edit(Cursor & cur, bool front, EntryDirection)
 }
 
 
-void InsetTabular::updateLabels(ParIterator const & it)
+void InsetTabular::updateLabels(ParIterator const & it, bool out)
 {
        // In a longtable, tell captions what the current float is
        Counters & cnts = buffer().masterBuffer()->params().documentClass().counters();
@@ -3334,7 +3413,7 @@ void InsetTabular::updateLabels(ParIterator const & it)
        it2.forwardPos();
        size_t const end = it2.nargs();
        for ( ; it2.idx() < end; it2.top().forwardIdx())
-               buffer().updateLabels(it2);
+               buffer().updateLabels(it2, out);
 
        //reset afterwards
        if (tabular.is_long_tabular)
@@ -4220,6 +4299,12 @@ int InsetTabular::docbook(odocstream & os, OutputParams const & runparams) const
 }
 
 
+docstring InsetTabular::xhtml(XHTMLStream & xs, OutputParams const & rp) const
+{
+       return tabular.xhtml(xs, rp);
+}
+
+
 void InsetTabular::validate(LaTeXFeatures & features) const
 {
        tabular.validate(features);
@@ -4763,6 +4848,14 @@ void InsetTabular::tabularFeatures(Cursor & cur,
                break;
 
        case Tabular::UNSET_LONGTABULAR:
+               for (row_type i = 0; i < tabular.row_info.size(); ++i) {
+                       if (tabular.ltCaption(i)) {
+                               cur.idx() = tabular.cellIndex(i, 0);
+                               cur.pit() = 0;
+                               cur.pos() = 0;
+                               tabularFeatures(cur, Tabular::TOGGLE_LTCAPTION);
+                       }
+               }
                tabular.is_long_tabular = false;
                break;
 
@@ -4876,15 +4969,22 @@ void InsetTabular::tabularFeatures(Cursor & cur,
                break;
 
        case Tabular::TOGGLE_LTCAPTION: {
-               bool set = !tabular.ltCaption(row);
+               bool const set = !tabular.ltCaption(row);
                cur.idx() = tabular.setLTCaption(row, set);
                cur.pit() = 0;
                cur.pos() = 0;
                cur.setSelection(false);
-               // When a row is set as caption, then also insert a caption. Otherwise
-               // the LaTeX output is broken, when the user doesn't add a caption.
-               if (set)
+
+               if (set) {
+                       // When a row is set as caption, then also insert
+                       // a caption. Otherwise the LaTeX output is broken.
+                       lyx::dispatch(FuncRequest(LFUN_INSET_SELECT_ALL));
                        lyx::dispatch(FuncRequest(LFUN_CAPTION_INSERT));
+               } else {
+                       FuncRequest fr(LFUN_INSET_DISSOLVE, "caption");
+                       if (lyx::getStatus(fr).enabled())
+                               lyx::dispatch(fr);
+               }
                break;
        }
 
@@ -5276,13 +5376,19 @@ bool InsetTabular::insertPlaintextString(BufferView & bv, docstring const & buf,
 }
 
 
-void InsetTabular::addPreview(PreviewLoader & loader) const
+void InsetTabular::addPreview(DocIterator const & inset_pos,
+       PreviewLoader & loader) const
 {
        row_type const rows = tabular.row_info.size();
        col_type const columns = tabular.column_info.size();
+       DocIterator cell_pos = inset_pos;
+
+       cell_pos.push_back(CursorSlice(*const_cast<InsetTabular *>(this)));
        for (row_type i = 0; i < rows; ++i) {
-               for (col_type j = 0; j < columns; ++j)
-                       tabular.cellInset(i, j)->addPreview(loader);
+               for (col_type j = 0; j < columns; ++j) {
+                       cell_pos.top().idx() = tabular.cellIndex(i, j);
+                       tabular.cellInset(i, j)->addPreview(cell_pos, loader);
+               }
        }
 }