#include <qcheckbox.h>
#include "lengthcombo.h"
#include "qsetborder.h"
-
+
typedef Qt2CB<ControlTabular, Qt2DB<QTabularDialog> > base_class;
QTabular::QTabular()
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);
}
{
LyXTabular * tabular(controller().tabular());
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();
}
int const row(tabular->row_of_cell(cell));
int const col(tabular->column_of_cell(cell));
-
+
dialog_->tabularRowED->setText(tostr(row + 1).c_str());
dialog_->tabularColumnED->setText(tostr(col + 1).c_str());
LyXLength pwidth;
string special;
-
+
if (multicol) {
special = tabular->GetAlignSpecial(cell, LyXTabular::SET_SPECIAL_MULTI);
pwidth = tabular->GetMColumnPWidth(cell);
special = tabular->GetAlignSpecial(cell, LyXTabular::SET_SPECIAL_COLUMN);
pwidth = tabular->GetColumnPWidth(cell);
}
-
+
dialog_->specialAlignmentED->setText(special.c_str());
bool const isReadonly = bc().bp().isReadOnly();
dialog_->widthED->setEnabled(!isReadonly);
dialog_->widthUnit->setEnabled(!isReadonly);
+ dialog_->hAlignCB->clear();
+ dialog_->hAlignCB->insertItem(_("Left"));
+ dialog_->hAlignCB->insertItem(_("Center"));
+ dialog_->hAlignCB->insertItem(_("Right"));
+ if (!multicol && !pwidth.zero())
+ dialog_->hAlignCB->insertItem(_("Block"));
+
int align = 0;
switch (tabular->GetAlignment(cell)) {
case LYX_ALIGN_LEFT:
- align = 1;
+ align = 0;
break;
case LYX_ALIGN_CENTER:
- align = 2;
+ align = 1;
break;
case LYX_ALIGN_RIGHT:
- align = 3;
+ align = 2;
+ break;
+ case LYX_ALIGN_BLOCK:
+ {
+ if (!multicol && !pwidth.zero())
+ align = 3;
break;
+ }
default:
align = 0;
break;
dialog_->newpageCB->setChecked(false);
return;
}
-
+
LyXTabular::ltType ltt;
bool use_empty;
bool row_set = tabular->GetRowOfLTHead(row, ltt);
str2 = tabular->GetAlignSpecial(cell, LyXTabular::SET_SPECIAL_MULTI);
else
str2 = tabular->GetAlignSpecial(cell, LyXTabular::SET_SPECIAL_COLUMN);
-
+
if (str1 != str2) {
if (controller().isMulticolumnCell())
controller().set(LyXTabular::SET_SPECIAL_MULTI, str1);