2003-08-19 10:04:35 +00:00
|
|
|
|
/**
|
|
|
|
|
* \file insetbase.C
|
|
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
|
* Licence details can be found in the file COPYING.
|
|
|
|
|
*
|
|
|
|
|
* \author Andr<EFBFBD> P<EFBFBD>nitz
|
|
|
|
|
*
|
2003-08-23 00:17:00 +00:00
|
|
|
|
* Full author contact details are available in file CREDITS.
|
2003-08-19 10:04:35 +00:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <config.h>
|
2003-09-05 09:01:27 +00:00
|
|
|
|
|
2003-02-18 11:47:16 +00:00
|
|
|
|
#include "insetbase.h"
|
2004-01-30 11:41:12 +00:00
|
|
|
|
|
2004-02-02 17:32:56 +00:00
|
|
|
|
#include "buffer.h"
|
2004-01-30 11:41:12 +00:00
|
|
|
|
#include "BufferView.h"
|
|
|
|
|
#include "LColor.h"
|
|
|
|
|
#include "cursor.h"
|
2003-11-06 16:43:12 +00:00
|
|
|
|
#include "debug.h"
|
2004-01-30 11:41:12 +00:00
|
|
|
|
#include "dimension.h"
|
2003-10-29 10:47:21 +00:00
|
|
|
|
#include "dispatchresult.h"
|
2004-01-26 10:13:15 +00:00
|
|
|
|
#include "gettext.h"
|
|
|
|
|
#include "lyxtext.h"
|
2004-01-30 11:41:12 +00:00
|
|
|
|
#include "metricsinfo.h"
|
|
|
|
|
|
|
|
|
|
#include "frontends/Painter.h"
|
|
|
|
|
|
2003-02-18 11:47:16 +00:00
|
|
|
|
|
|
|
|
|
|
2004-03-18 12:53:43 +00:00
|
|
|
|
void InsetBase::dispatch(LCursor & cur, FuncRequest & cmd)
|
2003-10-17 18:01:15 +00:00
|
|
|
|
{
|
2004-02-16 11:58:51 +00:00
|
|
|
|
priv_dispatch(cur, cmd);
|
2003-10-17 18:01:15 +00:00
|
|
|
|
}
|
2003-02-18 11:47:16 +00:00
|
|
|
|
|
2003-10-17 18:01:15 +00:00
|
|
|
|
|
2004-03-18 12:53:43 +00:00
|
|
|
|
void InsetBase::priv_dispatch(LCursor & cur, FuncRequest &)
|
2003-02-18 11:47:16 +00:00
|
|
|
|
{
|
2004-03-01 17:12:09 +00:00
|
|
|
|
cur.noUpdate();
|
|
|
|
|
cur.undispatched();
|
2003-02-18 11:47:16 +00:00
|
|
|
|
}
|
2003-11-04 12:36:59 +00:00
|
|
|
|
|
|
|
|
|
|
2004-02-20 17:19:53 +00:00
|
|
|
|
bool InsetBase::getStatus(LCursor &, FuncRequest const &, FuncStatus &)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-01-20 14:25:24 +00:00
|
|
|
|
void InsetBase::edit(LCursor &, bool)
|
2003-11-06 16:43:12 +00:00
|
|
|
|
{
|
|
|
|
|
lyxerr << "InsetBase: edit left/right" << std::endl;
|
|
|
|
|
}
|
2003-11-04 12:36:59 +00:00
|
|
|
|
|
|
|
|
|
|
2004-02-16 11:58:51 +00:00
|
|
|
|
InsetBase * InsetBase::editXY(LCursor &, int x, int y)
|
2003-11-04 12:36:59 +00:00
|
|
|
|
{
|
2004-02-16 11:58:51 +00:00
|
|
|
|
lyxerr << "InsetBase: editXY x:" << x << " y: " << y << std::endl;
|
2004-02-13 13:51:12 +00:00
|
|
|
|
return this;
|
2003-11-04 12:36:59 +00:00
|
|
|
|
}
|
2004-01-26 10:13:15 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InsetBase::idx_type InsetBase::index(row_type row, col_type col) const
|
|
|
|
|
{
|
|
|
|
|
if (row != 0)
|
|
|
|
|
lyxerr << "illegal row: " << row << std::endl;
|
|
|
|
|
if (col != 0)
|
|
|
|
|
lyxerr << "illegal col: " << col << std::endl;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool InsetBase::idxBetween(idx_type idx, idx_type from, idx_type to) const
|
|
|
|
|
{
|
|
|
|
|
return from <= idx && idx <= to;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool InsetBase::idxUpDown(LCursor &, bool) const
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool InsetBase::idxUpDown2(LCursor &, bool) const
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int InsetBase::plaintext(Buffer const &,
|
|
|
|
|
std::ostream &, OutputParams const &) const
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int InsetBase::linuxdoc(Buffer const &,
|
|
|
|
|
std::ostream &, OutputParams const &) const
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int InsetBase::docbook(Buffer const &,
|
|
|
|
|
std::ostream &, OutputParams const &) const
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool InsetBase::directWrite() const
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InsetBase::EDITABLE InsetBase::editable() const
|
|
|
|
|
{
|
|
|
|
|
return NOT_EDITABLE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool InsetBase::autoDelete() const
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string const InsetBase::editMessage() const
|
|
|
|
|
{
|
|
|
|
|
return _("Opened inset");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string const & InsetBase::getInsetName() const
|
|
|
|
|
{
|
|
|
|
|
static std::string const name = "unknown";
|
|
|
|
|
return name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void InsetBase::markErased()
|
|
|
|
|
{}
|
|
|
|
|
|
2004-01-30 11:41:12 +00:00
|
|
|
|
|
|
|
|
|
void InsetBase::getCursorPos(CursorSlice const &, int & x, int & y) const
|
|
|
|
|
{
|
|
|
|
|
lyxerr << "InsetBase::getCursorPos called directly" << std::endl;
|
|
|
|
|
x = 100;
|
|
|
|
|
y = 100;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void InsetBase::metricsMarkers(Dimension & dim, int) const
|
|
|
|
|
{
|
|
|
|
|
dim.wid += 2;
|
|
|
|
|
dim.asc += 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void InsetBase::metricsMarkers2(Dimension & dim, int) const
|
|
|
|
|
{
|
|
|
|
|
dim.wid += 2;
|
|
|
|
|
dim.asc += 1;
|
|
|
|
|
dim.des += 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void InsetBase::drawMarkers(PainterInfo & pi, int x, int y) const
|
|
|
|
|
{
|
|
|
|
|
if (!editing(pi.base.bv))
|
|
|
|
|
return;
|
|
|
|
|
int const t = x + width() - 1;
|
|
|
|
|
int const d = y + descent();
|
|
|
|
|
pi.pain.line(x, d - 3, x, d, LColor::mathframe);
|
|
|
|
|
pi.pain.line(t, d - 3, t, d, LColor::mathframe);
|
|
|
|
|
pi.pain.line(x, d, x + 3, d, LColor::mathframe);
|
|
|
|
|
pi.pain.line(t - 3, d, t, d, LColor::mathframe);
|
|
|
|
|
setPosCache(pi, x, y);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void InsetBase::drawMarkers2(PainterInfo & pi, int x, int y) const
|
|
|
|
|
{
|
|
|
|
|
if (!editing(pi.base.bv))
|
|
|
|
|
return;
|
|
|
|
|
drawMarkers(pi, x, y);
|
|
|
|
|
int const t = x + width() - 1;
|
|
|
|
|
int const a = y - ascent();
|
|
|
|
|
pi.pain.line(x, a + 3, x, a, LColor::mathframe);
|
|
|
|
|
pi.pain.line(t, a + 3, t, a, LColor::mathframe);
|
|
|
|
|
pi.pain.line(x, a, x + 3, a, LColor::mathframe);
|
|
|
|
|
pi.pain.line(t - 3, a, t, a, LColor::mathframe);
|
|
|
|
|
setPosCache(pi, x, y);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool InsetBase::editing(BufferView * bv) const
|
|
|
|
|
{
|
|
|
|
|
return bv->cursor().isInside(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool InsetBase::covers(int x, int y) const
|
|
|
|
|
{
|
|
|
|
|
return x >= xo()
|
|
|
|
|
&& x <= xo() + width()
|
|
|
|
|
&& y >= yo() - ascent()
|
|
|
|
|
&& y <= yo() + descent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-02-02 17:32:56 +00:00
|
|
|
|
void InsetBase::dump() const
|
|
|
|
|
{
|
|
|
|
|
Buffer buf("foo", 1);
|
|
|
|
|
write(buf, lyxerr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-01-26 10:13:15 +00:00
|
|
|
|
/////////////////////////////////////////
|
|
|
|
|
|
2004-01-30 11:41:12 +00:00
|
|
|
|
bool isEditableInset(InsetBase const * inset)
|
2004-01-26 10:13:15 +00:00
|
|
|
|
{
|
2004-01-30 11:41:12 +00:00
|
|
|
|
return inset && inset->editable();
|
2004-01-26 10:13:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-01-30 11:41:12 +00:00
|
|
|
|
bool isHighlyEditableInset(InsetBase const * inset)
|
2004-01-26 10:13:15 +00:00
|
|
|
|
{
|
2004-01-30 11:41:12 +00:00
|
|
|
|
return inset && inset->editable() == InsetBase::HIGHLY_EDITABLE;
|
2004-01-26 10:13:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|