You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/kword/KWCommand.h

902 lines
24 KiB

/* This file is part of the KDE project
Copyright (C) 2001 David Faure <faure@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef KWORD_COMMAND_H
#define KWORD_COMMAND_H
#include <kcommand.h>
#include <kurl.h>
#include <KoCommandHistory.h>
#include <KoPageLayout.h>
#include <KoRect.h>
#include <KoBorder.h>
#include <KoParagLayout.h>
#include <KoParagCounter.h>
#include "KWFrameStyle.h"
#include <KoTextCommand.h>
#include "KWVariable.h"
#include <KoPoint.h>
#include <KoPictureKey.h>
class KWFrameSet;
class KWTableStyle;
class KWTableTemplate;
class KWTableFrameSet;
class RemovedRow;
class RemovedColumn;
class KWPartFrameSet;
class KWDocument;
class KoCustomVariable;
class KoLinkVariable;
class KWFieldVariable;
class KWTimeVariable;
class KWDateVariable;
class KWPgNumVariable;
class KWFootNoteVariable;
// TODO: change most KNamedCommands into KCommands, removing name arguments
// and implementing name() instead (less memory used).
/**
* Command created when pasting oasis-formatted text
*/
class KWOasisPasteCommand : public KoTextDocCommand
{
public:
KWOasisPasteCommand( KoTextDocument *d, int parag, int idx,
const TQByteArray & data );
KoTextCursor *execute( KoTextCursor *c );
KoTextCursor *unexecute( KoTextCursor *c );
protected:
int m_parag;
int m_idx;
TQByteArray m_data;
// filled in by execute(), for unexecute()
int m_lastParag;
int m_lastIndex;
KoParagLayout* m_oldParagLayout;
};
struct ParagBookmark {
TQString m_bookName;
int m_startParagIndex;
int m_endParagIndex;
};
class KWTextDeleteCommand : public KoTextDeleteCommand
{
public:
KWTextDeleteCommand( KoTextDocument *d, int i, int idx, const TQMemArray<KoTextStringChar> &str,
const CustomItemsMap & customItemsMap,
const TQValueList<KoParagLayout> & oldParagLayouts );
KoTextCursor *execute( KoTextCursor *c );
KoTextCursor *unexecute( KoTextCursor *c );
void createBookmarkList();
private:
TQValueList<ParagBookmark> m_listParagBookmark;
};
////////////////////////// Frame commands ////////////////////////////////
/// Identifies a frame
struct FrameIndex {
FrameIndex() {}
FrameIndex( KWFrame *frame );
KWFrameSet * m_pFrameSet;
unsigned int m_iFrameIndex;
};
/**
* Command created when changing frame border
*/
class KWFrameBorderCommand : public KNamedCommand
{
public:
//enum FrameBorderType { FBLeft=0, FBRight=1, FBTop=2, FBBottom=3};
struct FrameBorderTypeStruct {
KoBorder::BorderType m_EFrameType;
KoBorder m_OldBorder;
};
KWFrameBorderCommand( const TQString &name, TQPtrList<FrameIndex> &_listFrameIndex, TQPtrList<FrameBorderTypeStruct> &_frameTypeBorder,const KoBorder & _newBorder ) ;
~ KWFrameBorderCommand();
void execute();
void unexecute();
protected:
TQPtrList<FrameIndex> m_indexFrame;
TQPtrList<FrameBorderTypeStruct> m_oldBorderFrameType;
KoBorder m_newBorder;
};
/**
* Command created when changing background color of one or more frames
*/
class KWFrameBackGroundColorCommand : public KNamedCommand
{
public:
KWFrameBackGroundColorCommand( const TQString &name, TQPtrList<FrameIndex> &_listFrameIndex, TQPtrList<TQBrush> &_oldBrush, const TQBrush & _newColor ) ;
~KWFrameBackGroundColorCommand();
void execute();
void unexecute();
protected:
TQPtrList<FrameIndex> m_indexFrame;
TQPtrList<TQBrush> m_oldBackGroundColor;
TQBrush m_newColor;
};
/**
* Command created when applying a framestyle
*/
class KWFrameStyleCommand : public KNamedCommand
{
public:
KWFrameStyleCommand( const TQString &name, KWFrame *_frame, KWFrameStyle *_fs, bool _repaintViews = true );
~ KWFrameStyleCommand() { if (m_oldValues) delete m_oldValues; }
void execute();
void unexecute();
protected:
void applyFrameStyle( KWFrameStyle * _sty );
KWFrame *m_frame ;
KWFrameStyle * m_fs;
KWFrameStyle * m_oldValues;
bool repaintViews;
};
/**
* Command created when applying a tablestyle
*/
class KWTableStyleCommand : public KNamedCommand
{
public:
KWTableStyleCommand( const TQString &name, KWFrame *_frame, KWTableStyle *_ts, bool _repaintViews = true );
~ KWTableStyleCommand();
void execute();
void unexecute();
protected:
KWFrame *m_frame ;
KWTableStyle * m_ts;
KWFrameStyleCommand * m_fsc;
KCommand * m_sc;
bool repaintViews;
};
/**
* Command created when applying a tabletemplate
*/
class KWTableTemplateCommand : public KNamedCommand
{
public:
KWTableTemplateCommand( const TQString &name, KWTableFrameSet *_table, KWTableTemplate *_tt );
~ KWTableTemplateCommand();
void execute();
void unexecute();
protected:
KWTableFrameSet *m_table;
KWTableTemplate * m_tt;
KMacroCommand * m_tableCommands;
};
struct FrameResizeStruct {
// Note that the new "minimum frame height" is always s2.height(),
// since this is called when the user manually resizes a frame (not when
// some text changes the size of a frame).
FrameResizeStruct() { } // default constructor;
FrameResizeStruct( const KoRect& s1, double min1, const KoRect& s2 )
: oldRect(s1), oldMinHeight(min1),
newRect( s2), newMinHeight(s2.height()) {
}
KoRect oldRect;
double oldMinHeight;
KoRect newRect;
double newMinHeight;
};
/**
* Command created when a frame is resized
* (or "moved and resized" as for KWPartFrameSet)
*/
class KWFrameResizeCommand : public KNamedCommand
{
public:
KWFrameResizeCommand(const TQString &name, const TQValueList<FrameIndex> &frameIndex, const TQValueList<FrameResizeStruct> &frameResize );
KWFrameResizeCommand(const TQString &name, FrameIndex frameIndex, const FrameResizeStruct &frameResize );
~KWFrameResizeCommand() {}
void execute();
void unexecute();
protected:
TQValueList<FrameIndex> m_indexFrame;
TQValueList<FrameResizeStruct> m_frameResize;
};
/**
* Command created when we changed a clipart or picture
*/
class KWFrameChangePictureCommand : public KNamedCommand
{
public:
KWFrameChangePictureCommand( const TQString &name, FrameIndex _frameIndex, const KoPictureKey & _oldFile, const KoPictureKey & _newFile) ;
~KWFrameChangePictureCommand() {}
void execute();
void unexecute();
protected:
FrameIndex m_indexFrame;
KoPictureKey m_oldKey;
KoPictureKey m_newKey;
};
struct FrameMoveStruct {
FrameMoveStruct() {} // for TQValueList
FrameMoveStruct( const KoPoint& p1, const KoPoint& p2 )
: oldPos(p1), newPos(p2) {
}
KoPoint oldPos;
KoPoint newPos;
};
/**
* Command created when one or more frames are moved
*/
class KWFrameMoveCommand : public KNamedCommand
{
public:
KWFrameMoveCommand( const TQString &name,
const TQValueList<FrameIndex> & _frameIndex,
const TQValueList<FrameMoveStruct> & _frameMove );
~KWFrameMoveCommand() {}
void execute();
void unexecute();
TQValueList<FrameMoveStruct> & listFrameMoved() { return m_frameMove; }
protected:
TQValueList<FrameIndex> m_indexFrame;
TQValueList<FrameMoveStruct> m_frameMove;
};
/**
* Command created when the properties of a frame are changed
* (e.g. using frame dialog).
* In the long run, KWFrameBackGroundColorCommand, KWFrameBorderCommand etc.
* could be removed and KWFramePropertiesCommand could be used instead.
* #### This solution is memory eating though, since all settings of the frame
* are copied. TODO: evaluate using graphite's GenericCommand instead.
*/
class KWFramePropertiesCommand : public KNamedCommand
{
public:
/** A copy of frameAfter is done internally.
* But make sure frameBefore is already a copy, its ownership is moved to the command.
*/
KWFramePropertiesCommand( const TQString &name, KWFrame *_frameBefore, KWFrame *_frameAfter );
~KWFramePropertiesCommand();
void execute();
void unexecute();
protected:
FrameIndex m_frameIndex;
KWFrame *m_frameBefore;
KWFrame *m_frameAfter;
};
/**
* Command created when one part is moved or resized
*/
class KWFramePartMoveCommand : public KNamedCommand
{
public:
KWFramePartMoveCommand( const TQString &name,FrameIndex _frameIndex,FrameResizeStruct _frameMove ) ;
~KWFramePartMoveCommand() {}
void execute();
void unexecute();
FrameResizeStruct & listFrameMoved() { return m_frameMove; }
bool frameMoved();
protected:
FrameIndex m_indexFrame;
FrameResizeStruct m_frameMove;
};
/**
* Command created when a part with an external document is changed to be stored internal
*/
class KWFramePartInternalCommand : public KNamedCommand
{
public:
KWFramePartInternalCommand( const TQString &name, KWPartFrameSet *part ) ;
~KWFramePartInternalCommand() {}
void execute();
void unexecute();
protected:
KWPartFrameSet *m_part;
KURL m_url;
};
/**
* Command created when a part with an external document is changed to be stored internal
*/
class KWFramePartExternalCommand : public KNamedCommand
{
public:
KWFramePartExternalCommand( const TQString &name, KWPartFrameSet *part ) ;
~KWFramePartExternalCommand() {}
void execute();
void unexecute();
protected:
KWPartFrameSet *m_part;
};
/**
* This command makes a frameset floating and non-floating
*/
class KWFrameSetInlineCommand : public KNamedCommand
{
public:
KWFrameSetInlineCommand( const TQString &name, KWFrameSet *frameset,
bool value );
~KWFrameSetInlineCommand() {}
void execute();
void unexecute();
protected:
void setValue( bool value );
KWFrameSet* m_pFrameSet;
bool m_value;
bool m_oldValue;
};
///////////////////////////////layout command///////////////////////////
struct KWPageLayoutStruct {
KWPageLayoutStruct( const KoPageLayout& pgLayout, const KoColumns& cl, const KoKWHeaderFooter& hf )
: _pgLayout(pgLayout), _cl(cl), _hf(hf) {
}
KoPageLayout _pgLayout;
KoColumns _cl;
KoKWHeaderFooter _hf;
};
/**
* Command created when changing the page layout
*/
class KWPageLayoutCommand : public KNamedCommand
{
public:
KWPageLayoutCommand( const TQString &name, KWDocument *_doc, KWPageLayoutStruct &_oldLayout, KWPageLayoutStruct &_newLayout);
~KWPageLayoutCommand() {}
void execute();
void unexecute();
protected:
KWDocument *m_pDoc;
KWPageLayoutStruct m_oldLayout;
KWPageLayoutStruct m_newLayout;
};
/**
* Command created when deleting a frame
*/
class KWDeleteFrameCommand : public KNamedCommand
{
public:
KWDeleteFrameCommand( const TQString &name, KWFrame * frame) ;
/**
* Constructor to be used for chaining commands, i.e. inside another command.
* @param frameIndex a frameIndex object that specifies which frame to delete
*/
KWDeleteFrameCommand( const FrameIndex &frameIndex) ;
~KWDeleteFrameCommand();
void execute();
void unexecute();
protected:
FrameIndex m_frameIndex;
KWFrame *m_copyFrame;
};
/**
* Command created when creating a frame
*/
class KWCreateFrameCommand : public KWDeleteFrameCommand
{
public:
KWCreateFrameCommand( const TQString &name, KWFrame * frame);
~KWCreateFrameCommand() {}
void execute() { KWDeleteFrameCommand::unexecute(); }
void unexecute() { KWDeleteFrameCommand::execute(); }
};
/**
* Command created when ungrouping a table
*/
class KWUngroupTableCommand : public KNamedCommand
{
public:
KWUngroupTableCommand( const TQString &name, KWTableFrameSet * _table) ;
~KWUngroupTableCommand() {}
void execute();
void unexecute();
protected:
KWTableFrameSet *m_pTable;
TQPtrList<KWFrameSet> m_ListFrame;
};
/**
* Command created when deleting a table
*/
class KWDeleteTableCommand : public KNamedCommand
{
public:
KWDeleteTableCommand( const TQString &name, KWTableFrameSet * _table) ;
~KWDeleteTableCommand() {}
void execute();
void unexecute();
protected:
KWTableFrameSet *m_pTable;
};
/**
* Command created when creating a table
*/
class KWCreateTableCommand : public KWDeleteTableCommand
{
public:
KWCreateTableCommand( const TQString &name, KWTableFrameSet * _table)
: KWDeleteTableCommand( name, _table ) {}
~KWCreateTableCommand() {}
void execute() { KWDeleteTableCommand::unexecute(); }
void unexecute() { KWDeleteTableCommand::execute(); }
};
/**
* Command created when inserting a column
*/
class KWInsertColumnCommand : public KNamedCommand
{
public:
/* for the last parameter, _maxRight, you should pass the maximum offset that the table can use at its right (normally m_maxRight - m_pTable->boundingRect().left())*/
KWInsertColumnCommand( const TQString &name, KWTableFrameSet * _table, int _pos, double _maxRight);
~KWInsertColumnCommand();
void execute();
void unexecute();
protected:
KWTableFrameSet *m_pTable;
RemovedColumn *m_rc;
unsigned int m_colPos;
double m_maxRight; // this is the maximum x of the right part of the table (used so that the table does no go off the page)
double m_oldWidth; // will be 0 after execute() if the width of the table was not changed by the operation
bool m_inserted;
};
/**
* Command created when inserting a row
*/
class KWInsertRowCommand : public KNamedCommand
{
public:
KWInsertRowCommand( const TQString &name, KWTableFrameSet * _table, int _pos);
~KWInsertRowCommand();
void execute();
void unexecute();
protected:
KWTableFrameSet *m_pTable;
RemovedRow *m_rr;
unsigned int m_rowPos;
bool m_inserted;
};
/**
* Command created when removing a row
*/
class KWRemoveRowCommand : public KNamedCommand
{
public:
KWRemoveRowCommand( const TQString &name, KWTableFrameSet * _table, int _pos);
~KWRemoveRowCommand();
void execute();
void unexecute();
protected:
KWTableFrameSet *m_pTable;
RemovedRow *m_rr;
uint m_rowPos;
};
/**
* Command created when removing a column
*/
class KWRemoveColumnCommand : public KNamedCommand
{
public:
KWRemoveColumnCommand( const TQString &name, KWTableFrameSet * _table, int _pos);
~KWRemoveColumnCommand();
void execute();
void unexecute();
protected:
KWTableFrameSet *m_pTable;
RemovedColumn *m_rc;
uint m_colPos;
};
/**
* Command created when splitting a cell
*/
class KWSplitCellCommand : public KNamedCommand
{
public:
KWSplitCellCommand( const TQString &name, KWTableFrameSet * _table,unsigned int colBegin,unsigned int rowBegin, unsigned int colEnd,unsigned int rowEnd );
~KWSplitCellCommand() {}
void execute();
void unexecute();
protected:
KWTableFrameSet *m_pTable;
unsigned int m_colBegin;
unsigned int m_rowBegin;
unsigned int m_colEnd;
unsigned int m_rowEnd;
TQPtrList<KWFrameSet> m_ListFrameSet;
};
/**
* Command created when joining cells
*/
class KWJoinCellCommand : public KNamedCommand
{
public:
KWJoinCellCommand( const TQString &name, KWTableFrameSet * _table,unsigned int colBegin,unsigned int rowBegin, unsigned int colEnd,unsigned int rowEnd, TQPtrList<KWFrameSet> listFrameSet,TQPtrList<KWFrame> listCopyFrame);
~KWJoinCellCommand();
void execute();
void unexecute();
protected:
KWTableFrameSet *m_pTable;
unsigned int m_colBegin;
unsigned int m_rowBegin;
unsigned int m_colEnd;
unsigned int m_rowEnd;
TQPtrList<KWFrameSet> m_ListFrameSet;
TQPtrList<KWFrame> m_copyFrame;
};
/**
* Command to starting page setting
*/
class KWChangeStartingPageCommand : public KNamedCommand
{
public:
KWChangeStartingPageCommand( const TQString &name, KWDocument *_doc, int _oldStartingPage, int _newStartingPage);
~KWChangeStartingPageCommand(){}
void execute();
void unexecute();
protected:
KWDocument *m_doc;
int oldStartingPage;
int newStartingPage;
};
/**
* Command to display link setting
*/
class KWChangeVariableSettingsCommand : public KNamedCommand
{
public:
enum VariableProperties { VS_DISPLAYLINK, VS_UNDERLINELINK, VS_DISPLAYCOMMENT, VS_DISPLAYFIELDCODE};
KWChangeVariableSettingsCommand( const TQString &name, KWDocument *_doc, bool _oldDisplay, bool _newDisplay, VariableProperties _type);
~KWChangeVariableSettingsCommand(){}
void execute();
void unexecute();
protected:
void changeValue( bool b );
KWDocument *m_doc;
VariableProperties type;
bool m_bOldValue;
bool m_bNewValue;
};
class KWChangeCustomVariableValue : public KNamedCommand
{
public:
KWChangeCustomVariableValue( const TQString &name, KWDocument *_doc,const TQString & _oldValue, const TQString & _newValue, KoCustomVariable *var);
~KWChangeCustomVariableValue();
void execute();
void unexecute();
protected:
KWDocument *m_doc;
TQString newValue;
TQString oldValue;
KoCustomVariable *m_var;
};
class KWChangeVariableNoteText : public KNamedCommand
{
public:
KWChangeVariableNoteText( const TQString &name, KWDocument *_doc, const TQString &_oldValue,const TQString &_newValue, KoNoteVariable *var);
~KWChangeVariableNoteText();
void execute();
void unexecute();
protected:
KWDocument *m_doc;
TQString newValue;
TQString oldValue;
KoNoteVariable *m_var;
};
class KWChangeLinkVariable : public KNamedCommand
{
public:
KWChangeLinkVariable( const TQString &name, KWDocument *_doc,const TQString & _oldHref, const TQString & _newHref, const TQString & _oldLink,const TQString &_newLink, KoLinkVariable *var);
~KWChangeLinkVariable(){};
void execute();
void unexecute();
protected:
KWDocument *m_doc;
TQString oldHref;
TQString newHref;
TQString oldLink;
TQString newLink;
KoLinkVariable *m_var;
};
class KWHideShowHeader : public KNamedCommand
{
public:
KWHideShowHeader( const TQString &name, KWDocument *_doc, bool _newValue);
~KWHideShowHeader(){};
void execute();
void unexecute();
protected:
KWDocument *m_doc;
bool newValue;
};
class KWHideShowFooter : public KNamedCommand
{
public:
KWHideShowFooter( const TQString &name, KWDocument *_doc, bool _newValue);
~KWHideShowFooter(){};
void execute();
void unexecute();
protected:
KWDocument *m_doc;
bool newValue;
};
class KWProtectContentCommand : public KNamedCommand
{
public:
KWProtectContentCommand( const TQString &name, KWTextFrameSet*frameset,bool protect );
~KWProtectContentCommand() {}
void execute();
void unexecute();
protected:
KWTextFrameSet* m_pFrameSet;
bool m_bProtect;
};
class KWInsertRemovePageCommand : public KCommand
{
public:
enum Command { Insert, Remove };
KWInsertRemovePageCommand( KWDocument *_doc, Command cmd, int pgNum);
~KWInsertRemovePageCommand();
virtual TQString name() const;
void execute();
void unexecute();
protected:
KWDocument *m_doc;
Command m_cmd;
int m_pgNum;
TQValueList<KCommand*> childCommands;
void doRemove(int pageNumber);
void doInsert(int pageNumber);
private:
static bool compareIndex(const FrameIndex &index1, const FrameIndex &index2);
};
struct FramePaddingStruct {
FramePaddingStruct() {}
FramePaddingStruct( KWFrame *frame );
FramePaddingStruct( double _left, double top, double right, double bottom );
double topPadding;
double bottomPadding;
double leftPadding;
double rightPadding;
};
class KWFrameChangeFramePaddingCommand :public KNamedCommand
{
public:
KWFrameChangeFramePaddingCommand( const TQString &name, FrameIndex _frameIndex, FramePaddingStruct _framePaddingBegin, FramePaddingStruct _framePaddingEnd );
~KWFrameChangeFramePaddingCommand() {}
void execute();
void unexecute();
protected:
FrameIndex m_indexFrame;
FramePaddingStruct m_framePaddingBegin;
FramePaddingStruct m_framePaddingEnd;
};
class KWChangeFootEndNoteSettingsCommand : public KNamedCommand
{
public:
KWChangeFootEndNoteSettingsCommand( const TQString &name, KoParagCounter _oldCounter, KoParagCounter _newCounter ,bool _footNote ,KWDocument *_doc );
~KWChangeFootEndNoteSettingsCommand() {}
void execute();
void unexecute();
protected:
void changeCounter( KoParagCounter counter);
KoParagCounter m_oldCounter;
KoParagCounter m_newCounter;
bool m_footNote;
KWDocument *m_doc;
};
class KWChangeTabStopValueCommand : public KNamedCommand
{
public:
KWChangeTabStopValueCommand( const TQString &name, double _oldValue, double _newValue, KWDocument *_doc);
~KWChangeTabStopValueCommand() {}
virtual void execute();
virtual void unexecute();
protected:
KWDocument *m_doc;
double m_oldValue;
double m_newValue;
};
struct FootNoteParameter {
FootNoteParameter() {}
FootNoteParameter( KWFootNoteVariable *_var );
FootNoteParameter( NoteType _noteType, KWFootNoteVariable::Numbering _numberingType, const TQString &_manualString);
NoteType noteType;
KWFootNoteVariable::Numbering numberingType;
TQString manualString;
};
class KWChangeFootNoteParametersCommand : public KNamedCommand
{
public:
KWChangeFootNoteParametersCommand( const TQString &name, KWFootNoteVariable * _var, FootNoteParameter _oldParameter, FootNoteParameter _newParameter, KWDocument *_doc);
~KWChangeFootNoteParametersCommand() {}
virtual void execute();
virtual void unexecute();
protected:
void changeVariableParameter( FootNoteParameter _param );
KWDocument *m_doc;
KWFootNoteVariable *m_var;
FootNoteParameter m_oldParameter;
FootNoteParameter m_newParameter;
};
class KWChangeFootNoteLineSeparatorParametersCommand : public KNamedCommand
{
public:
KWChangeFootNoteLineSeparatorParametersCommand( const TQString &name, SeparatorLinePos _oldValuePos, SeparatorLinePos _newValuePos, int _oldLength, int _newLength, double _oldWidth, double _newWidth,SeparatorLineLineType _oldLineType, SeparatorLineLineType _newLineType, KWDocument *_doc);
~KWChangeFootNoteLineSeparatorParametersCommand() {}
virtual void execute();
virtual void unexecute();
protected:
void changeLineSeparatorParameter( SeparatorLinePos _pos, int length, double _width, SeparatorLineLineType _type);
KWDocument *m_doc;
SeparatorLinePos m_oldValuePos;
SeparatorLinePos m_newValuePos;
int m_oldLength;
int m_newLength;
double m_oldWidth;
double m_newWidth;
SeparatorLineLineType m_oldLineType;
SeparatorLineLineType m_newLineType;
};
class KWRenameBookmarkCommand : public KNamedCommand
{
public:
KWRenameBookmarkCommand( const TQString &name, const TQString & _oldname, const TQString & _newName, KWDocument *_doc);
~KWRenameBookmarkCommand() {}
virtual void execute();
virtual void unexecute();
protected:
KWDocument *m_doc;
TQString m_oldName;
TQString m_newName;
};
class KWResizeColumnCommand : public KNamedCommand
{
public:
KWResizeColumnCommand( KWTableFrameSet *table, int col, double oldSize, double newSize );
~KWResizeColumnCommand() {}
virtual void execute();
virtual void unexecute();
protected:
KWTableFrameSet *m_table;
double m_oldSize;
double m_newSize;
int m_col;
};
class KWResizeRowCommand : public KNamedCommand
{
public:
KWResizeRowCommand( KWTableFrameSet *table, int row, double oldSize, double newSize );
~KWResizeRowCommand() {}
virtual void execute();
virtual void unexecute();
protected:
KWTableFrameSet *m_table;
double m_oldSize;
double m_newSize;
int m_row;
};
#endif