*
* \author Jürgen Vigna
*
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "insettabular.h"
-#include "insettext.h"
#include "buffer.h"
#include "BufferView.h"
-#include "lfuns.h"
#include "debug.h"
-#include "dimension.h"
#include "funcrequest.h"
+#include "FuncStatus.h"
#include "gettext.h"
#include "language.h"
-#include "LaTeXFeatures.h"
-#include "Lsstream.h"
#include "lyx_cb.h"
-#include "lyxfunc.h"
-#include "lyxlength.h"
#include "lyxlex.h"
-#include "lyxtext.h"
+#include "metricsinfo.h"
+#include "paragraph_funcs.h"
#include "ParagraphParameters.h"
#include "undo_funcs.h"
#include "WordLangTuple.h"
-#include "metricsinfo.h"
#include "frontends/Alert.h"
-#include "frontends/Dialogs.h"
#include "frontends/font_metrics.h"
#include "frontends/LyXView.h"
#include "frontends/Painter.h"
#include "support/LAssert.h"
-#include "support/lstrings.h"
-
-#include <fstream>
-#include <algorithm>
-#include <cstdlib>
-#include <map>
+#include "support/std_sstream.h"
using namespace lyx::support;
using namespace lyx::graphics;
-using std::vector;
-using std::ostream;
-using std::ifstream;
-using std::max;
using std::endl;
-using std::swap;
using std::max;
+using std::swap;
using std::auto_ptr;
+using std::ifstream;
+using std::ostream;
+using std::vector;
namespace {
{ LyXTabular::ALIGN_BLOCK, "align-block" },
{ LyXTabular::VALIGN_TOP, "valign-top" },
{ LyXTabular::VALIGN_BOTTOM, "valign-bottom" },
- { LyXTabular::VALIGN_CENTER, "valign-center" },
+ { LyXTabular::VALIGN_MIDDLE, "valign-middle" },
{ LyXTabular::M_TOGGLE_LINE_TOP, "m-toggle-line-top" },
{ LyXTabular::M_TOGGLE_LINE_BOTTOM, "m-toggle-line-bottom" },
{ LyXTabular::M_TOGGLE_LINE_LEFT, "m-toggle-line-left" },
{ LyXTabular::M_ALIGN_CENTER, "m-align-center" },
{ LyXTabular::M_VALIGN_TOP, "m-valign-top" },
{ LyXTabular::M_VALIGN_BOTTOM, "m-valign-bottom" },
- { LyXTabular::M_VALIGN_CENTER, "m-valign-center" },
+ { LyXTabular::M_VALIGN_MIDDLE, "m-valign-middle" },
{ LyXTabular::MULTICOLUMN, "multicolumn" },
{ LyXTabular::SET_ALL_LINES, "set-all-lines" },
{ LyXTabular::UNSET_ALL_LINES, "unset-all-lines" },
}
-Buffer const * InsetTabular::buffer() const
+Buffer const & InsetTabular::buffer() const
{
- return buffer_;
+ return *buffer_;
}
}
-void InsetTabular::write(Buffer const * buf, ostream & os) const
+void InsetTabular::write(Buffer const & buf, ostream & os) const
{
os << "Tabular" << endl;
tabular.write(buf, os);
}
-void InsetTabular::read(Buffer const * buf, LyXLex & lex)
+void InsetTabular::read(Buffer const & buf, LyXLex & lex)
{
bool const old_format = (lex.getString() == "\\LyXTable");
void InsetTabular::updateLocal(BufferView * bv) const
{
- bv->updateInset();
+ bv->updateInset(this);
if (locked)
resetPos(bv);
}
updateLocal(bv);
break;
case LFUN_NEXT: {
- if (hs)
+ if (hs)
clearSelection();
int column = actcol;
unlockInsetInInset(bv, the_locking_inset);
- if (bv->text->top_y() + bv->painter().paperHeight() <
+ if (bv->top_y() + bv->painter().paperHeight() <
top_baseline + tabular.getHeightOfTabular())
{
- bv->scrollDocView(bv->text->top_y() + bv->painter().paperHeight());
+ bv->scrollDocView(bv->top_y() + bv->painter().paperHeight());
actcell = tabular.getCellBelow(first_visible_cell) + column;
} else {
actcell = tabular.getFirstCellInRow(tabular.rows() - 1) + column;
int column = actcol;
unlockInsetInInset(bv, the_locking_inset);
if (top_baseline < 0) {
- bv->scrollDocView(bv->text->top_y() - bv->painter().paperHeight());
+ bv->scrollDocView(bv->top_y() - bv->painter().paperHeight());
if (top_baseline > 0)
actcell = column;
else
}
-int InsetTabular::latex(Buffer const * buf, ostream & os,
+int InsetTabular::latex(Buffer const & buf, ostream & os,
LatexRunParams const & runparams) const
{
return tabular.latex(buf, os, runparams);
}
-int InsetTabular::ascii(Buffer const * buf, ostream & os, int ll) const
+int InsetTabular::ascii(Buffer const & buf, ostream & os, int ll) const
{
if (ll > 0)
- return tabular.ascii(buf, os, (int)parOwner()->params().depth(),
+ return tabular.ascii(buf, os, ownerPar(buf, this).params().depth(),
false, 0);
return tabular.ascii(buf, os, 0, false, 0);
}
-int InsetTabular::linuxdoc(Buffer const * buf, ostream & os) const
+int InsetTabular::linuxdoc(Buffer const & buf, ostream & os) const
{
return tabular.linuxdoc(buf,os);
}
-int InsetTabular::docbook(Buffer const * buf, ostream & os, bool mixcont) const
+int InsetTabular::docbook(Buffer const & buf, ostream & os, bool mixcont) const
{
int ret = 0;
InsetOld * master;
setVAlign = LyXTabular::LYX_VALIGN_BOTTOM;
break;
- case LyXTabular::M_VALIGN_CENTER:
- case LyXTabular::VALIGN_CENTER:
- setVAlign = LyXTabular::LYX_VALIGN_CENTER;
+ case LyXTabular::M_VALIGN_MIDDLE:
+ case LyXTabular::VALIGN_MIDDLE:
+ setVAlign = LyXTabular::LYX_VALIGN_MIDDLE;
break;
default:
// the insettext of the active cell (if any)
// until later (see InsetText::do_resize)
unlockInsetInInset(bv, the_locking_inset);
-
- for (int i = 0; i < tabular.rows(); ++i)
- tabular.getCellInset(i, column).resizeLyXText(bv);
- updateLocal(bv);
+ bv->update();
}
if (vallen.zero()
// the insettext of the active cell (if any)
// until later (see InsetText::do_resize)
unlockInsetInInset(bv, the_locking_inset);
-
- for (int i = 0; i < tabular.rows(); ++i)
- tabular.getCellInset(i, column).resizeLyXText(bv);
-
updateLocal(bv);
}
}
case LyXTabular::M_VALIGN_TOP:
case LyXTabular::M_VALIGN_BOTTOM:
- case LyXTabular::M_VALIGN_CENTER:
+ case LyXTabular::M_VALIGN_MIDDLE:
flag = false;
case LyXTabular::VALIGN_TOP:
case LyXTabular::VALIGN_BOTTOM:
- case LyXTabular::VALIGN_CENTER:
+ case LyXTabular::VALIGN_MIDDLE:
for (int i = sel_row_start; i <= sel_row_end; ++i)
for (int j = sel_col_start; j <= sel_col_end; ++j)
tabular.setVAlignment(
}
-void InsetTabular::deleteLyXText(BufferView * bv, bool recursive) const
-{
- resizeLyXText(bv, recursive);
-}
-
-
-void InsetTabular::resizeLyXText(BufferView * bv, bool force) const
+void InsetTabular::deleteLyXText(BufferView * /*bv*/, bool /*recursive*/) const
{
- if (force)
- for (int i = 0; i < tabular.rows(); ++i)
- for (int j = 0; j < tabular.columns(); ++j)
- tabular.getCellInset(i, j).resizeLyXText(bv, true);
+ //resizeLyXText(bv, recursive);
}
status.setOnOff(tabular.getVAlignment(actcell, flag) == LyXTabular::LYX_VALIGN_BOTTOM);
break;
- case LyXTabular::M_VALIGN_CENTER:
+ case LyXTabular::M_VALIGN_MIDDLE:
flag = false;
- case LyXTabular::VALIGN_CENTER:
- status.setOnOff(tabular.getVAlignment(actcell, flag) == LyXTabular::LYX_VALIGN_CENTER);
+ case LyXTabular::VALIGN_MIDDLE:
+ status.setOnOff(tabular.getVAlignment(actcell, flag) == LyXTabular::LYX_VALIGN_MIDDLE);
break;
case LyXTabular::SET_LONGTABULAR:
true, true);
ostringstream os;
- paste_tabular->ascii(bv->buffer(), os,
- (int)parOwner()->params().depth(), true, '\t');
+ paste_tabular->ascii(*bv->buffer(), os,
+ ownerPar(*bv->buffer(), this).params().depth(), true, '\t');
bv->stuffClipboard(STRCONV(os.str()));
return true;
}
if (!lex.isOK())
return -1;
- Buffer const * const buffer = inset.buffer();
- if (buffer)
- inset.read(buffer, lex);
+ Buffer const & buffer = inset.buffer();
+ inset.read(buffer, lex);
// We can't set the active cell, but we can tell the frontend
// what it is.
string const InsetTabularMailer::params2string(InsetTabular const & inset)
{
- Buffer const * const buffer = inset.buffer();
- if (!buffer)
- return string();
+ Buffer const & buffer = inset.buffer();
ostringstream data;
data << name_ << " \\active_cell " << inset.getActCell() << '\n';