mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-16 13:02:49 +00:00
c293be56bd
In particular, the directory frontends/qt4 is renamed to frontends/qt. Many configurations file have to be updated. All mentions of qt4 in the source have been audited, and changed to qt if necessary. The only part that has not been updated is the CMake build system.
136 lines
2.7 KiB
C++
136 lines
2.7 KiB
C++
/**
|
|
* \file EmptyTable.cpp
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author John Levon
|
|
* \author Jürgen Spitzmüller
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
#include "EmptyTable.h"
|
|
|
|
#include "support/debug.h"
|
|
|
|
#include <QPainter>
|
|
#include <QMouseEvent>
|
|
|
|
/**
|
|
* A simple widget for a quick "preview" in TabularCreateDialog
|
|
*/
|
|
|
|
unsigned int const cellheight = 20;
|
|
unsigned int const cellwidth = 30;
|
|
|
|
|
|
EmptyTable::EmptyTable(QWidget * parent, int rows, int columns)
|
|
: QTableWidget(rows, columns, parent)
|
|
{
|
|
resetCellSize();
|
|
setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
|
setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
|
viewport()->resize(cellheight * rows, cellwidth * columns);
|
|
setSelectionMode(QAbstractItemView::NoSelection);
|
|
setEditTriggers(QAbstractItemView::NoEditTriggers);
|
|
}
|
|
|
|
|
|
QSize EmptyTable::sizeHint() const
|
|
{
|
|
return QSize(cellwidth * (2 + columnCount()), cellheight * (2 + rowCount()));
|
|
}
|
|
|
|
void EmptyTable::resetCellSize()
|
|
{
|
|
for(int i = 0; i < rowCount(); ++i)
|
|
setRowHeight(i, cellheight);
|
|
for(int i = 0; i < columnCount(); ++i)
|
|
setColumnWidth(i, cellwidth);
|
|
}
|
|
|
|
void EmptyTable::paintCell(QPainter * p, int row, int col)
|
|
{
|
|
int const x2 = columnWidth(col) - 1;
|
|
int const y2 = rowHeight(row) - 1;
|
|
|
|
p->fillRect(0, 0, x2, y2, QColor("white"));
|
|
p->drawLine(x2, 0, x2, y2);
|
|
p->drawLine(0, y2, x2, y2);
|
|
|
|
if (row + 1 != rowCount() || col + 1 != columnCount())
|
|
return;
|
|
|
|
// draw handle
|
|
int const step = cellheight / 5;
|
|
int const space = 4;
|
|
int x = cellwidth - step;
|
|
int const y = cellheight - space;
|
|
int const ex = cellwidth - space;
|
|
int ey = cellheight - step;
|
|
while (x > space) {
|
|
p->drawLine(x, y, ex, ey);
|
|
x -= step;
|
|
ey -= step;
|
|
}
|
|
}
|
|
|
|
|
|
void EmptyTable::setNumberColumns(int nr_cols)
|
|
{
|
|
if (nr_cols < 1)
|
|
return;
|
|
if (nr_cols == columnCount())
|
|
return;
|
|
setColumnCount(nr_cols);
|
|
resetCellSize();
|
|
updateGeometry();
|
|
// emit signal
|
|
colsChanged(nr_cols);
|
|
}
|
|
|
|
|
|
void EmptyTable::setNumberRows(int nr_rows)
|
|
{
|
|
if (nr_rows < 1)
|
|
return;
|
|
if (nr_rows == rowCount())
|
|
return;
|
|
setRowCount(nr_rows);
|
|
resetCellSize();
|
|
updateGeometry();
|
|
// emit signal
|
|
rowsChanged(nr_rows);
|
|
}
|
|
|
|
|
|
void EmptyTable::mouseMoveEvent(QMouseEvent *ev)
|
|
{
|
|
int cc = columnCount();
|
|
int rc = rowCount();
|
|
int x = ev->x();
|
|
int y = ev->y();
|
|
int w = cellwidth * cc;
|
|
int h = cellheight * rc;
|
|
int wl = cellwidth * (cc - 1);
|
|
int hl = cellheight * (rc - 1);
|
|
if (x > w)
|
|
setNumberColumns(cc + 1);
|
|
if (y > h)
|
|
setNumberRows(rc + 1);
|
|
if (x < wl)
|
|
setNumberColumns(cc - 1);
|
|
if (y < hl)
|
|
setNumberRows(rc - 1);
|
|
}
|
|
|
|
#include "moc_EmptyTable.cpp"
|
|
|
|
|
|
namespace lyx {
|
|
|
|
|
|
} // namespace lyx
|