ultimatepp/uppsrc/RichEdit/TableUndo.cpp
mdelfede 263ff5f895 changed svn layout
git-svn-id: svn://ultimatepp.org/upp/trunk@281 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-06-07 22:31:27 +00:00

102 lines
2.2 KiB
C++

#include "RichEdit.h"
NAMESPACE_UPP
void RichEdit::UndoTableFormat::Apply(RichText& txt)
{
txt.SetTableFormat(table, format);
}
RichEdit::UndoRec *RichEdit::UndoTableFormat::GetRedo(const RichText& txt)
{
return new UndoTableFormat(txt, table);
}
RichEdit::UndoTableFormat::UndoTableFormat(const RichText& txt, int table)
: table(table)
{
format = txt.GetTableFormat(table);
}
// -----------------------
void RichEdit::UndoCreateTable::Apply(RichText& txt)
{
txt.DestroyTable(table);
}
RichEdit::UndoRec *RichEdit::UndoCreateTable::GetRedo(const RichText& txt)
{
return new UndoDestroyTable(txt, table);
}
// -----------------------
void RichEdit::UndoDestroyTable::Apply(RichText& txt)
{
txt.SetTable(pos, table);
}
RichEdit::UndoRec *RichEdit::UndoDestroyTable::GetRedo(const RichText& txt)
{
return new UndoCreateTable(txt.GetRichPos(pos).table + 1);
}
RichEdit::UndoDestroyTable::UndoDestroyTable(const RichText& txt, int tab)
{
pos = txt.GetCellPos(tab, 0, 0).pos;
table = txt.CopyTable(tab);
}
// -----------------------
void RichEdit::UndoInsertParaSpecial::Apply(RichText& txt)
{
txt.RemoveParaSpecial(table, before);
RichCellPos p = txt.GetCellPos(table, 0, 0);
}
RichEdit::UndoRec *RichEdit::UndoInsertParaSpecial::GetRedo(const RichText& txt)
{
return new UndoRemoveParaSpecial(txt, table, before);
}
// -----------------------
void RichEdit::UndoRemoveParaSpecial::Apply(RichText& txt)
{
txt.InsertParaSpecial(table, before, format);
}
RichEdit::UndoRec *RichEdit::UndoRemoveParaSpecial::GetRedo(const RichText& txt)
{
return new UndoInsertParaSpecial(table, before);
}
RichEdit::UndoRemoveParaSpecial::UndoRemoveParaSpecial(const RichText& txt, int table, bool before)
: table(table), before(before)
{
RichCellPos p = txt.GetCellPos(table, 0, 0);
format = txt.GetRichPos(before ? p.pos - 1 : p.pos + p.tablen + 1).format;
}
// -----------------------
void RichEdit::UndoTable::Apply(RichText& txt)
{
txt.ReplaceTable(table, copy);
}
RichEdit::UndoRec *RichEdit::UndoTable::GetRedo(const RichText& txt)
{
return new UndoTable(txt, table);
}
RichEdit::UndoTable::UndoTable(const RichText& txt, int tab)
{
table = tab;
copy = txt.CopyTable(tab);
}
END_UPP_NAMESPACE