Juergen's tabular patch. Yay !

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5745 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
John Levon 2002-11-28 18:07:39 +00:00
parent 1e640e8bc7
commit d9076c62ed
5 changed files with 152 additions and 37 deletions

View File

@ -1,3 +1,10 @@
2002-11-28 Juergen Spitzmueller <j.spitzmueller@gmx.de>
* qsetborder.[Ch]: implement John's setEnabled bool
* QTabular.C:
* QTabularDialog.C: remaining fixes.
2002-11-28 John Levon <levon@movementarian.org>
* QSpellcheckerDialog.C: fix Escape + restarting spellcheck

View File

@ -46,7 +46,37 @@ void QTabular::build_dialog()
bc().setCancel(dialog_->closePB);
// FIXME: add widgets to read only
bc().addReadOnly(dialog_->multicolumnCB);
bc().addReadOnly(dialog_->rotateCellCB);
bc().addReadOnly(dialog_->rotateTabularCB);
bc().addReadOnly(dialog_->specialAlignmentED);
bc().addReadOnly(dialog_->widthED);
bc().addReadOnly(dialog_->widthUnit);
bc().addReadOnly(dialog_->hAlignCB);
bc().addReadOnly(dialog_->vAlignCB);
bc().addReadOnly(dialog_->columnAddPB);
bc().addReadOnly(dialog_->columnDeletePB);
bc().addReadOnly(dialog_->rowAddPB);
bc().addReadOnly(dialog_->rowDeletePB);
bc().addReadOnly(dialog_->borderSetPB);
bc().addReadOnly(dialog_->borderUnsetPB);
bc().addReadOnly(dialog_->borders);
bc().addReadOnly(dialog_->longTabularCB);
bc().addReadOnly(dialog_->headerStatusCB);
bc().addReadOnly(dialog_->headerBorderAboveCB);
bc().addReadOnly(dialog_->headerBorderBelowCB);
bc().addReadOnly(dialog_->firstheaderStatusCB);
bc().addReadOnly(dialog_->firstheaderBorderAboveCB);
bc().addReadOnly(dialog_->firstheaderBorderBelowCB);
bc().addReadOnly(dialog_->firstheaderNoContentsCB);
bc().addReadOnly(dialog_->footerStatusCB);
bc().addReadOnly(dialog_->footerBorderAboveCB);
bc().addReadOnly(dialog_->footerBorderBelowCB);
bc().addReadOnly(dialog_->lastfooterStatusCB);
bc().addReadOnly(dialog_->lastfooterBorderAboveCB);
bc().addReadOnly(dialog_->lastfooterBorderBelowCB);
bc().addReadOnly(dialog_->lastfooterNoContentsCB);
bc().addReadOnly(dialog_->newpageCB);
}
@ -62,17 +92,38 @@ void QTabular::update_borders()
int cell(controller().inset()->getActCell());
if (!controller().isMulticolumnCell()) {
dialog_->borders->setLeftEnabled(true);
dialog_->borders->setRightEnabled(true);
dialog_->borders->setTop(tabular->TopLine(cell, true));
dialog_->borders->setBottom(tabular->BottomLine(cell, true));
dialog_->borders->setLeft(tabular->LeftLine(cell, true));
dialog_->borders->setRight(tabular->RightLine(cell, true));
// repaint the setborder widget
dialog_->borders->repaint();
return;
}
dialog_->borders->setTop(tabular->TopLine(cell));
dialog_->borders->setBottom(tabular->BottomLine(cell));
dialog_->borders->setLeft(tabular->LeftLine(cell));
dialog_->borders->setRight(tabular->RightLine(cell));
// pay attention to left/right lines: they are only allowed
// to set if we are in first/last cell of row or if the left/right
// cell is also a multicolumn.
if (tabular->IsFirstCellInRow(cell) || tabular->IsMultiColumn(cell - 1)) {
dialog_->borders->setLeftEnabled(true);
dialog_->borders->setLeft(tabular->LeftLine(cell));
} else {
dialog_->borders->setLeft(false);
dialog_->borders->setLeftEnabled(false);
}
if (tabular->IsLastCellInRow(cell) || tabular->IsMultiColumn(cell + 1)) {
dialog_->borders->setRightEnabled(true);
dialog_->borders->setRight(tabular->RightLine(cell));
} else {
dialog_->borders->setRight(false);
dialog_->borders->setRightEnabled(false);
}
// repaint the setborder widget
dialog_->borders->repaint();
}

View File

@ -84,7 +84,6 @@ void QTabularDialog::borderSet_clicked()
form_->controller().set(LyXTabular::SET_ALL_LINES);
form_->update_borders();
form_->changed();
//FIXME: qsetborder widget not updated
}
void QTabularDialog::borderUnset_clicked()
@ -92,7 +91,6 @@ void QTabularDialog::borderUnset_clicked()
form_->controller().set(LyXTabular::UNSET_ALL_LINES);
form_->update_borders();
form_->changed();
//FIXME: qsetborder widget not updated
}

View File

@ -4,6 +4,7 @@
* Licence details can be found in the file COPYING.
*
* \author Edwin Leuven
* \author John Levon
*
* Full author contact details are available in file CREDITS
*/
@ -15,9 +16,7 @@
QSetBorder::QSetBorder(QWidget * parent, char const * name, WFlags fl)
: QWidget(parent, name, fl),
left_(true), right_(true), top_(true), bottom_(true),
buffer(75, 75)
: QWidget(parent, name, fl), buffer(75, 75)
{
/* length of corner line */
l = buffer.width() / 10;
@ -70,19 +69,27 @@ void QSetBorder::mousePressEvent(QMouseEvent * e)
{
if (e->y() > e->x()) {
if (e->y() < height() - e->x()) {
setLeft(!left_);
emit leftSet(left_);
if (left_.enabled) {
setLeft(!left_.set);
emit leftSet(left_.set);
}
} else {
setBottom(!bottom_);
emit bottomSet(bottom_);
if (bottom_.enabled) {
setBottom(!bottom_.set);
emit bottomSet(bottom_.set);
}
}
} else {
if (e->y() < height() - e->x()) {
setTop(!top_);
emit topSet(top_);
if (top_.enabled) {
setTop(!top_.set);
emit topSet(top_.set);
}
} else {
setRight(!right_);
emit rightSet(right_);
if (right_.enabled) {
setRight(!right_.set);
emit rightSet(right_.set);
}
}
}
update();
@ -90,13 +97,13 @@ void QSetBorder::mousePressEvent(QMouseEvent * e)
}
void QSetBorder::drawLine(bool draw, int x, int y, int x2, int y2)
void QSetBorder::drawLine(QColor const & col, int x, int y, int x2, int y2)
{
QPainter paint;
paint.begin(&buffer);
QPen p = paint.pen();
p.setWidth(2);
p.setColor(draw ? Qt::black : Qt::white);
p.setColor(col);
paint.setPen(p);
paint.drawLine(x, y, x2, y2);
paint.end();
@ -105,52 +112,92 @@ void QSetBorder::drawLine(bool draw, int x, int y, int x2, int y2)
void QSetBorder::drawLeft(bool draw)
{
drawLine(draw, m + l, m + l + 2, m + l, h - m - l - 1);
QColor col(draw ? Qt::black : Qt::white);
if (!left_.enabled)
col = QColor("grey");
drawLine(col, m + l, m + l + 2, m + l, h - m - l - 1);
}
void QSetBorder::drawRight(bool draw)
{
drawLine(draw, h - m - l + 1, m + l + 2, h - m - l + 1, h - m - l - 1);
QColor col(draw ? Qt::black : Qt::white);
if (!right_.enabled)
col = QColor("grey");
drawLine(col, h - m - l + 1, m + l + 2, h - m - l + 1, h - m - l - 1);
}
void QSetBorder::drawTop(bool draw)
{
drawLine(draw, m + l + 2, m + l, w - m - l - 1, m + l);
QColor col(draw ? Qt::black : Qt::white);
if (!top_.enabled)
col = QColor("grey");
drawLine(col, m + l + 2, m + l, w - m - l - 1, m + l);
}
void QSetBorder::drawBottom(bool draw)
{
drawLine(draw, m + l + 2, w - m - l + 1, w - m - l - 1, w - m - l + 1);
QColor col(draw ? Qt::black : Qt::white);
if (!bottom_.enabled)
col = QColor("grey");
drawLine(col, m + l + 2, w - m - l + 1, w - m - l - 1, w - m - l + 1);
}
void QSetBorder::setLeftEnabled(bool border)
{
left_.enabled = border;
drawLeft(border);
}
void QSetBorder::setRightEnabled(bool border)
{
right_.enabled = border;
drawRight(border);
}
void QSetBorder::setTopEnabled(bool border)
{
top_.enabled = border;
drawTop(border);
}
void QSetBorder::setBottomEnabled(bool border)
{
bottom_.enabled = border;
drawBottom(border);
}
void QSetBorder::setLeft(bool border)
{
left_ = border;
left_.set = border;
drawLeft(border);
}
void QSetBorder::setRight(bool border)
{
right_ = border;
right_.set = border;
drawRight(border);
}
void QSetBorder::setTop(bool border)
{
top_ = border;
top_.set = border;
drawTop(border);
}
void QSetBorder::setBottom(bool border)
{
bottom_ = border;
bottom_.set = border;
drawBottom(border);
}
@ -166,23 +213,23 @@ void QSetBorder::setAll(bool border)
bool QSetBorder::getLeft()
{
return left_;
return left_.set;
}
bool QSetBorder::getRight()
{
return right_;
return right_.set;
}
bool QSetBorder::getTop()
{
return top_;
return top_.set;
}
bool QSetBorder::getBottom()
{
return bottom_;
return bottom_.set;
}

View File

@ -5,6 +5,7 @@
* Licence details can be found in the file COPYING.
*
* \author Edwin Leuven
* \author John Levon
*
* Full author contact details are available in file CREDITS
*/
@ -13,6 +14,7 @@
#include <qwidget.h>
#include <qpixmap.h>
#include <qcolor.h>
class QMouseEvent;
class QResizeEvent;
@ -37,6 +39,10 @@ signals:
void clicked();
public slots:
void setLeftEnabled(bool);
void setRightEnabled(bool);
void setTopEnabled(bool);
void setBottomEnabled(bool);
void setLeft(bool);
void setRight(bool);
void setTop(bool);
@ -50,17 +56,23 @@ protected:
private:
void init();
void drawLine(bool set, int x, int y, int x2, int y2);
void drawLine(QColor const & col, int x, int y, int x2, int y2);
void drawLeft(bool);
void drawRight(bool);
void drawTop(bool);
void drawBottom(bool);
bool left_;
bool right_;
bool top_;
bool bottom_;
struct Border {
Border() : set(true), enabled(true) {}
bool set;
bool enabled;
};
Border left_;
Border right_;
Border top_;
Border bottom_;
int m;
int l;