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/lib/kotext/KoTextCommand.h

174 lines
5.7 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 kocommand_h
#define kocommand_h
#include <kcommand.h>
#include <KoRichText.h>
class KoTextObject;
class KoTextDocument;
class KoVariable;
#include <KoParagLayout.h>
#include <KoTextDocument.h>
#include <koffice_export.h>
/**
* Wraps a KoTextDocCommand into a KCommand, for the UI
* In fact the KoTextDocCommand isn't even known from here.
* When the UI orders execute or unexecute, we simply call undo/redo
* on the KoTextObject. Since one KCommand is created for each
* command there, the two simply map.
*/
class KOTEXT_EXPORT KoTextCommand : public KNamedCommand
{
public:
KoTextCommand( KoTextObject * textobj, const TQString & name ) :
KNamedCommand( name ), m_textobj(textobj) {}
~KoTextCommand() {}
virtual void execute();
virtual void unexecute();
protected:
KoTextObject * m_textobj;
};
/**
* Command created when deleting some text
*/
class KOTEXT_EXPORT KoTextDeleteCommand : public KoTextDocDeleteCommand
{
public:
KoTextDeleteCommand( 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 );
protected:
TQValueList<KoParagLayout> m_oldParagLayouts;
CustomItemsMap m_customItemsMap;
};
/**
* Command created when inserting some text
*/
class KoTextInsertCommand : public KoTextDeleteCommand
{
public:
KoTextInsertCommand( KoTextDocument *d, int i, int idx, const TQMemArray<KoTextStringChar> &str,
const CustomItemsMap & customItemsMap,
const TQValueList<KoParagLayout> &oldParagLayouts )
: KoTextDeleteCommand( d, i, idx, str, customItemsMap, oldParagLayouts ) {}
Commands type() const { return Insert; };
KoTextCursor *execute( KoTextCursor *c ) { return KoTextDeleteCommand::unexecute( c ); }
KoTextCursor *unexecute( KoTextCursor *c ) { return KoTextDeleteCommand::execute( c ); }
};
/**
* Command created when changing paragraph attributes
*/
class KOTEXT_EXPORT KoTextParagCommand : public KoTextDocCommand
{
public:
KoTextParagCommand( KoTextDocument *d, int fParag, int lParag,
const TQValueList<KoParagLayout> &oldParagLayouts,
KoParagLayout newParagLayout,
int /*KoParagLayout::Flags*/ flags,
TQStyleSheetItem::Margin margin = (TQStyleSheetItem::Margin)-1 );
// margin is only meaningful if flags==Margins only. -1 means all.
KoTextCursor *execute( KoTextCursor *c );
KoTextCursor *unexecute( KoTextCursor *c );
protected:
int firstParag, lastParag;
TQValueList<KoParagLayout> m_oldParagLayouts;
KoParagLayout m_newParagLayout;
int m_flags;
int m_margin;
};
/**
* Command created when changing the default format of paragraphs.
* This is ONLY used for counters and bullet's formatting.
* See KoTextFormatCommand for the command used when changing the formatting of any set of characters.
*/
class KoParagFormatCommand : public KoTextDocCommand
{
public:
KoParagFormatCommand( KoTextDocument *d, int fParag, int lParag,
const TQValueList<KoTextFormat *> &oldFormats,
KoTextFormat * newFormat );
~KoParagFormatCommand();
KoTextCursor *execute( KoTextCursor *c );
KoTextCursor *unexecute( KoTextCursor *c );
protected:
int firstParag, lastParag;
TQValueList<KoTextFormat *> m_oldFormats;
KoTextFormat * m_newFormat;
};
/**
* Command created when changing formatted text
*/
class KoTextFormatCommand : public KoTextDocFormatCommand
{
public:
KoTextFormatCommand( KoTextDocument *d, int sid, int sidx, int eid, int eidx, const TQMemArray<KoTextStringChar> &old, const KoTextFormat *f, int fl );
virtual ~KoTextFormatCommand();
KoTextCursor *execute( KoTextCursor *c );
KoTextCursor *unexecute( KoTextCursor *c );
void resizeCustomItems();
};
/**
* Command created when changing the subtype of a variable
* (turning "fixed date" into "variable date").
*/
class KoChangeVariableSubType : public KCommand
{
public:
KoChangeVariableSubType( short int _oldValue, short int _newValue, KoVariable *var );
void execute();
void unexecute();
virtual TQString name() const;
private:
short int m_newValue;
short int m_oldValue;
KoVariable *m_var;
};
/**
* Command created when changing the properties of a variable's format
* (e.g. DD/MM/YYYY)
*/
class KoChangeVariableFormatProperties : public KCommand
{
public:
KoChangeVariableFormatProperties( const TQString &_oldValue, const TQString &_newValue, KoVariable *var);
virtual TQString name() const;
void execute();
void unexecute();
private:
TQString m_newValue;
TQString m_oldValue;
KoVariable *m_var;
};
#endif