mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-27 03:36:39 +00:00
Implement copying of rows and columns in tables
* src/insets/insettabular.C (InsetTabular::getStatus): enable COPY_ROW and COPY_COLUMN features (InsetTabular::tabularFeatures): handle COPY_ROW and COPY_COLUMN * src/tabular.h (TabularFeature): add COPY_ROW and COPY_COLUMN * src/tabular.[Ch] (LyXTabular::copyRow): new method, copy a row (LyXTabular::copyColumn): new method, copy a column git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15173 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
864515f3a3
commit
70d57a2300
@ -95,6 +95,8 @@ TabularFeature tabularFeature[] =
|
|||||||
{ LyXTabular::APPEND_COLUMN, "append-column" },
|
{ LyXTabular::APPEND_COLUMN, "append-column" },
|
||||||
{ LyXTabular::DELETE_ROW, "delete-row" },
|
{ LyXTabular::DELETE_ROW, "delete-row" },
|
||||||
{ LyXTabular::DELETE_COLUMN, "delete-column" },
|
{ LyXTabular::DELETE_COLUMN, "delete-column" },
|
||||||
|
{ LyXTabular::COPY_ROW, "copy-row" },
|
||||||
|
{ LyXTabular::COPY_COLUMN, "copy-column" },
|
||||||
{ LyXTabular::TOGGLE_LINE_TOP, "toggle-line-top" },
|
{ LyXTabular::TOGGLE_LINE_TOP, "toggle-line-top" },
|
||||||
{ LyXTabular::TOGGLE_LINE_BOTTOM, "toggle-line-bottom" },
|
{ LyXTabular::TOGGLE_LINE_BOTTOM, "toggle-line-bottom" },
|
||||||
{ LyXTabular::TOGGLE_LINE_LEFT, "toggle-line-left" },
|
{ LyXTabular::TOGGLE_LINE_LEFT, "toggle-line-left" },
|
||||||
@ -826,6 +828,8 @@ bool InsetTabular::getStatus(LCursor & cur, FuncRequest const & cmd,
|
|||||||
case LyXTabular::APPEND_COLUMN:
|
case LyXTabular::APPEND_COLUMN:
|
||||||
case LyXTabular::DELETE_ROW:
|
case LyXTabular::DELETE_ROW:
|
||||||
case LyXTabular::DELETE_COLUMN:
|
case LyXTabular::DELETE_COLUMN:
|
||||||
|
case LyXTabular::COPY_ROW:
|
||||||
|
case LyXTabular::COPY_COLUMN:
|
||||||
case LyXTabular::SET_ALL_LINES:
|
case LyXTabular::SET_ALL_LINES:
|
||||||
case LyXTabular::UNSET_ALL_LINES:
|
case LyXTabular::UNSET_ALL_LINES:
|
||||||
case LyXTabular::SET_TOP_SPACE:
|
case LyXTabular::SET_TOP_SPACE:
|
||||||
@ -1461,6 +1465,15 @@ void InsetTabular::tabularFeatures(LCursor & cur,
|
|||||||
cur.selection() = false;
|
cur.selection() = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LyXTabular::COPY_ROW:
|
||||||
|
tabular.copyRow(bv.buffer()->params(), row);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LyXTabular::COPY_COLUMN:
|
||||||
|
tabular.copyColumn(bv.buffer()->params(), column);
|
||||||
|
cur.idx() = tabular.getCellNumber(row, column);
|
||||||
|
break;
|
||||||
|
|
||||||
case LyXTabular::M_TOGGLE_LINE_TOP:
|
case LyXTabular::M_TOGGLE_LINE_TOP:
|
||||||
flag = false;
|
flag = false;
|
||||||
case LyXTabular::TOGGLE_LINE_TOP: {
|
case LyXTabular::TOGGLE_LINE_TOP: {
|
||||||
|
@ -516,6 +516,21 @@ void LyXTabular::deleteRow(row_type const row)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LyXTabular::copyRow(BufferParams const & bp, row_type const row)
|
||||||
|
{
|
||||||
|
++rows_;
|
||||||
|
|
||||||
|
row_info.insert(row_info.begin() + row, row_info[row]);
|
||||||
|
cell_info.insert(cell_info.begin() + row, cell_info[row]);
|
||||||
|
|
||||||
|
if (bp.tracking_changes)
|
||||||
|
for (col_type j = 0; j < columns_; ++j)
|
||||||
|
cell_info[row + 1][j].inset->markNew(true);
|
||||||
|
|
||||||
|
set_row_column_number_info();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LyXTabular::appendColumn(BufferParams const & bp, idx_type const cell)
|
void LyXTabular::appendColumn(BufferParams const & bp, idx_type const cell)
|
||||||
{
|
{
|
||||||
++columns_;
|
++columns_;
|
||||||
@ -561,6 +576,22 @@ void LyXTabular::deleteColumn(col_type const column)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LyXTabular::copyColumn(BufferParams const & bp, col_type const column)
|
||||||
|
{
|
||||||
|
++columns_;
|
||||||
|
|
||||||
|
column_info.insert(column_info.begin() + column, column_info[column]);
|
||||||
|
|
||||||
|
for (row_type i = 0; i < rows_; ++i)
|
||||||
|
cell_info[i].insert(cell_info[i].begin() + column, cell_info[i][column]);
|
||||||
|
|
||||||
|
if (bp.tracking_changes)
|
||||||
|
for (row_type i = 0; i < rows_; ++i)
|
||||||
|
cell_info[i][column + 1].inset->markNew(true);
|
||||||
|
fixCellNums();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LyXTabular::set_row_column_number_info()
|
void LyXTabular::set_row_column_number_info()
|
||||||
{
|
{
|
||||||
numberofcells = 0;
|
numberofcells = 0;
|
||||||
|
@ -43,6 +43,10 @@ public:
|
|||||||
///
|
///
|
||||||
DELETE_COLUMN,
|
DELETE_COLUMN,
|
||||||
///
|
///
|
||||||
|
COPY_ROW,
|
||||||
|
///
|
||||||
|
COPY_COLUMN,
|
||||||
|
///
|
||||||
TOGGLE_LINE_TOP,
|
TOGGLE_LINE_TOP,
|
||||||
///
|
///
|
||||||
TOGGLE_LINE_BOTTOM,
|
TOGGLE_LINE_BOTTOM,
|
||||||
@ -282,10 +286,14 @@ public:
|
|||||||
///
|
///
|
||||||
void deleteRow(row_type row);
|
void deleteRow(row_type row);
|
||||||
///
|
///
|
||||||
|
void copyRow(BufferParams const &, row_type);
|
||||||
|
///
|
||||||
void appendColumn(BufferParams const &, idx_type cell);
|
void appendColumn(BufferParams const &, idx_type cell);
|
||||||
///
|
///
|
||||||
void deleteColumn(col_type column);
|
void deleteColumn(col_type column);
|
||||||
///
|
///
|
||||||
|
void copyColumn(BufferParams const &, col_type);
|
||||||
|
///
|
||||||
bool isFirstCellInRow(idx_type cell) const;
|
bool isFirstCellInRow(idx_type cell) const;
|
||||||
///
|
///
|
||||||
idx_type getFirstCellInRow(row_type row) const;
|
idx_type getFirstCellInRow(row_type row) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user