1
// -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*-
2
/* This file is part of the KDE project
3
Copyright (C) 2001 Laurent Montel <lmontel@mandrakesoft.com>
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Library General Public
7
License as published by the Free Software Foundation; either
8
version 2 of the License, or (at your option) any later version.
10
This library is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
Library General Public License for more details.
15
You should have received a copy of the GNU Library General Public License
16
along with this library; see the file COPYING.LIB. If not, write to
17
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18
Boston, MA 02111-1307, USA.
30
#include <koPictureCollection.h>
31
#include <qvaluelist.h>
34
#include <koPageLayoutDia.h>
35
#include <koparaglayout.h>
36
#include <kocommand.h>
49
class KoCustomVariable;
51
class KPPolylineObject;
52
class KPrFieldVariable;
53
class KPrTimeVariable;
54
class KPrDateVariable;
55
class KPrPgNumVariable;
57
class ShadowCmd : public KNamedCommand
63
ShadowDirection shadowDirection;
67
ShadowCmd( const QString &_name, QPtrList<ShadowValues> &_oldShadow, ShadowValues _newShadow,
68
QPtrList<KPObject> &_objects, KPresenterDoc *_doc );
71
virtual void execute();
72
virtual void unexecute();
76
QPtrList<ShadowValues> oldShadow;
77
QPtrList<KPObject> objects;
78
ShadowValues newShadow;
82
class SetOptionsCmd : public KNamedCommand
85
SetOptionsCmd( const QString &_name, QValueList<KoPoint> &_diffs, QPtrList<KPObject> &_objects,
86
double _rastX, double _rastY, double _orastX, double _orastY,
87
const QColor &_txtBackCol, const QColor &_otxtBackCol, KPresenterDoc *_doc );
90
virtual void execute();
91
virtual void unexecute();
95
QValueList<KoPoint> diffs;
96
QPtrList<KPObject> objects;
106
class SetBackCmd : public KNamedCommand
109
SetBackCmd( const QString &_name, const QColor &_backColor1, const QColor &_backColor2, BCType _bcType,
110
bool _backUnbalanced, int _backXFactor, int _backYFactor,
111
const KoPictureKey & _backPix,
112
BackView _backView, BackType _backType,
113
const QColor &_oldBackColor1, const QColor &_oldBackColor2, BCType _oldBcType,
114
bool _oldBackUnbalanced, int _oldBackXFactor, int _oldBackYFactor,
115
const KoPictureKey & _oldBackPix,
116
BackView _oldBackView, BackType _oldBackType,
117
bool _takeGlobal, KPresenterDoc *_doc, KPrPage *_page );
119
virtual void execute();
120
virtual void unexecute();
124
QColor backColor1, backColor2;
126
int xfactor, yfactor;
127
KoPictureKey backPix;
131
QColor oldBackColor1, oldBackColor2;
133
int oldXFactor, oldYFactor;
134
KoPictureKey oldBackPix;
136
BackView oldBackView;
137
BackType oldBackType;
143
class RotateCmd : public KNamedCommand
151
RotateCmd( const QString &_name, QPtrList<RotateValues> &_oldRotate, float _newAngle,
152
QPtrList<KPObject> &_objects, KPresenterDoc *_doc, bool _addAngle = false );
155
virtual void execute();
156
virtual void unexecute();
160
QPtrList<RotateValues> oldRotate;
161
QPtrList<KPObject> objects;
163
//necessary for duplicate object, we can duplicated and add angle.
168
class ResizeCmd : public KNamedCommand
171
ResizeCmd( const QString &_name, const KoPoint &_m_diff, const KoSize &_r_diff,
172
KPObject *_object, KPresenterDoc *_doc );
175
virtual void execute();
176
virtual void unexecute();
177
virtual void unexecute( bool _repaint );
188
class ChgPixCmd : public KNamedCommand
191
ChgPixCmd( const QString &_name, KPPixmapObject *_oldObject, KPPixmapObject *_newObject,
192
KPresenterDoc *_doc, KPrPage *_page );
195
virtual void execute();
196
virtual void unexecute();
200
KPPixmapObject *oldObject, *newObject;
205
class DeleteCmd : public KNamedCommand
208
DeleteCmd( const QString &_name, QPtrList<KPObject> &_objects, KPresenterDoc *_doc,
212
virtual void execute();
213
virtual void unexecute();
217
QPtrList<KPObject> objects;
222
class EffectCmd : public KNamedCommand
225
struct EffectStruct {
226
int presNum, disappearNum;
231
int appearTimer, disappearTimer;
232
bool appearSoundEffect, disappearSoundEffect;
233
QString a_fileName, d_fileName;
236
EffectCmd( const QString &_name, const QPtrList<KPObject> &_objs,
237
const QValueList<EffectStruct> &_oldEffects, EffectStruct _newEffect );
240
virtual void execute();
241
virtual void unexecute();
245
QValueList<EffectStruct> oldEffects;
246
EffectStruct newEffect;
247
QPtrList<KPObject> objs;
250
class GroupObjCmd : public KNamedCommand
253
GroupObjCmd( const QString &_name,
254
const QPtrList<KPObject> &_objects,
255
KPresenterDoc *_doc, KPrPage *_page );
258
virtual void execute();
259
virtual void unexecute();
263
QPtrList<KPObject> objects;
265
KPGroupObject *grpObj;
270
class UnGroupObjCmd : public KNamedCommand
273
UnGroupObjCmd( const QString &_name,
274
KPGroupObject *grpObj_,
275
KPresenterDoc *_doc, KPrPage *_page );
278
virtual void execute();
279
virtual void unexecute();
283
QPtrList<KPObject> objects;
285
KPGroupObject *grpObj;
290
class InsertCmd : public KNamedCommand
293
InsertCmd( const QString &_name, KPObject *_object, KPresenterDoc *_doc, KPrPage *_page );
296
virtual void execute();
297
virtual void unexecute();
307
class LowerRaiseCmd : public KNamedCommand
310
LowerRaiseCmd( const QString &_name, QPtrList<KPObject> _oldList, QPtrList<KPObject> _newList,
311
KPresenterDoc *_doc, KPrPage *_page );
314
virtual void execute();
315
virtual void unexecute();
319
QPtrList<KPObject> oldList, newList;
324
class MoveByCmd : public KNamedCommand
327
MoveByCmd( const QString &_name, const KoPoint &_diff, QPtrList<KPObject> &_objects,
328
KPresenterDoc *_doc, KPrPage *_page );
331
virtual void execute();
332
virtual void unexecute();
337
QPtrList<KPObject> objects;
342
class MoveByCmd2 : public KNamedCommand
345
MoveByCmd2( const QString &_name, QPtrList<KoPoint> &_diffs, QPtrList<KPObject> &_objects,
346
KPresenterDoc *_doc, KPrPage *_page );
349
virtual void execute();
350
virtual void unexecute();
354
QPtrList<KoPoint> diffs;
355
QPtrList<KPObject> objects;
360
class PenCmd : public KNamedCommand
365
LineEnd lineBegin, lineEnd;
367
Pen &operator=( const Pen &_pen ) {
369
lineBegin = _pen.lineBegin;
370
lineEnd = _pen.lineEnd;
375
// the flags indicate what has changed
376
enum PenConfigChange {
382
All = LineBegin | LineEnd | Color | Width | Style
385
PenCmd(const QString &_name, QPtrList<Pen> &_oldPen, Pen _newPen,
386
QPtrList<KPObject> &_objects, KPresenterDoc *_doc, KPrPage *_page, int _flags = All);
388
void applyPen(KPObject *kpobject, Pen *tmpPen);
390
virtual void execute();
391
virtual void unexecute();
396
QPtrList<Pen> oldPen;
397
QPtrList<KPObject> objects;
402
class BrushCmd : public KNamedCommand
412
int xfactor, yfactor;
414
Brush &operator=( const Brush &_brush ) {
415
brush = _brush.brush;
416
gColor1 = _brush.gColor1;
417
gColor2 = _brush.gColor2;
418
gType = _brush.gType;
419
fillType = _brush.fillType;
420
unbalanced = _brush.unbalanced;
421
xfactor = _brush.xfactor;
422
yfactor = _brush.yfactor;
427
// the flags indicate what has changed
428
enum BrushConfigChange {
431
BrushGradientSelect = 4,
435
GradientBalanced = 64,
436
All = BrushColor | BrushStyle | BrushGradientSelect | GradientColor1 | GradientColor2 | GradientType | GradientBalanced
439
BrushCmd(const QString &_name, QPtrList<Brush> &_oldBrush, Brush _newBrush,
440
QPtrList<KPObject> &_objects, KPresenterDoc *_doc, KPrPage *_page, int _flags = All);
442
void applyBrush(KPObject *kpobject, Brush *tmpBrush);
444
virtual void execute();
445
virtual void unexecute();
449
QPtrList<Brush> oldBrush;
450
QPtrList<KPObject> objects;
456
class PgConfCmd : public KNamedCommand
459
PgConfCmd( const QString &_name, bool _manualSwitch, bool _infiniteLoop,
460
bool _showPresentationDuration, QPen _pen,
461
PresSpeed _presSpeed,
462
QValueList<bool> _selectedSlides,
463
bool _oldManualSwitch, bool _oldInfiniteLoop,
464
bool _oldShowPresentationDuration, QPen _oldPen,
465
PresSpeed _oldPresSpeed,
466
QValueList<bool> _oldSelectedSlides,
467
KPresenterDoc *_doc );
469
virtual void execute();
470
virtual void unexecute();
473
bool manualSwitch, oldManualSwitch;
474
bool infiniteLoop, oldInfiniteLoop;
475
bool showPresentationDuration, oldShowPresentationDuration;
477
QValueList<bool> selectedSlides, oldSelectedSlides;
478
PresSpeed presSpeed, oldPresSpeed;
482
class TransEffectCmd : public KNamedCommand
485
TransEffectCmd( const QString &_name, PageEffect _pageEffect, PresSpeed _transSpeed,
486
bool _soundEffect, const QString& _soundFileName,
487
bool _autoAdvance, int _slideTime,
488
PageEffect _oldPageEffect, PresSpeed _oldTransSpeed,
489
bool _oldSoundEffect, const QString& _oldSoundFileName,
490
bool _oldAutoAdvance, int _oldSlideTime,
493
virtual void execute();
494
virtual void unexecute();
497
PageEffect pageEffect, oldPageEffect;
498
PresSpeed transSpeed, oldTransSpeed;
499
bool soundEffect, oldSoundEffect;
500
QString soundFileName, oldSoundFileName;
501
bool autoAdvance, oldAutoAdvance;
502
int slideTime, oldSlideTime;
508
class PgLayoutCmd : public KNamedCommand
511
PgLayoutCmd( const QString &_name, KoPageLayout _layout, KoPageLayout _oldLayout,
512
KoUnit::Unit _oldUnit, KoUnit::Unit _unit,KPresenterDoc *_doc );
514
virtual void execute();
515
virtual void unexecute();
518
KPresenterDoc *m_doc;
519
KoPageLayout layout, oldLayout;
520
KoUnit::Unit unit, oldUnit;
523
class PieValueCmd : public KNamedCommand
529
int pieAngle, pieLength;
532
// the flags indicate what has changed
533
enum PieConfigChange {
537
All = Type | Angle | Length
540
PieValueCmd( const QString &_name, QPtrList<PieValues> &_oldValues, PieValues _newValues,
541
QPtrList<KPObject> &_objects, KPresenterDoc *_doc, KPrPage *_page, int _flags = All );
544
virtual void execute();
545
virtual void unexecute();
551
QPtrList<PieValues> oldValues;
552
QPtrList<KPObject> objects;
557
class PolygonSettingCmd : public KNamedCommand
560
struct PolygonSettings
562
bool checkConcavePolygon;
567
// the flags indicate what has changed
568
enum PolygonConfigChange {
572
All = ConcaveConvex | Corners | Sharpness
575
PolygonSettingCmd( const QString &_name, QPtrList<PolygonSettings> &_oldSettings,
576
PolygonSettings _newSettings, QPtrList<KPObject> &_objects,
577
KPresenterDoc *_doc, KPrPage *_page, int _flags = All );
578
~PolygonSettingCmd();
580
virtual void execute();
581
virtual void unexecute();
587
QPtrList<PolygonSettings> oldSettings;
588
QPtrList<KPObject> objects;
589
PolygonSettings newSettings;
593
class PictureSettingCmd : public KNamedCommand
596
struct PictureSettings
598
PictureMirrorType mirrorType;
605
PictureSettingCmd( const QString &_name, QPtrList<PictureSettings> &_oldSettings,
606
PictureSettings _newSettings, QPtrList<KPObject> &_objects,
607
KPresenterDoc *_doc );
608
~PictureSettingCmd();
610
virtual void execute();
611
virtual void unexecute();
615
QPtrList<PictureSettings> oldSettings;
616
QPtrList<KPObject> objects;
617
PictureSettings newSettings;
621
class ImageEffectCmd : public KNamedCommand
624
struct ImageEffectSettings
632
ImageEffectCmd(const QString &_name, QPtrList<ImageEffectSettings> &_oldSettings,
633
ImageEffectSettings _newSettings, QPtrList<KPObject> &_objects,
634
KPresenterDoc *_doc );
637
virtual void execute();
638
virtual void unexecute();
642
QPtrList<ImageEffectSettings> oldSettings;
643
QPtrList<KPObject> objects;
644
ImageEffectSettings newSettings;
649
class RectValueCmd : public KNamedCommand
657
// the flags indicate what has changed
658
enum RectangleConfigChange {
664
RectValueCmd( const QString &_name, QPtrList<RectValues> &_oldValues, RectValues _newValues,
665
QPtrList<KPObject> &_objects, KPresenterDoc *_doc, KPrPage *_page, int _flags = All );
668
virtual void execute();
669
virtual void unexecute();
675
QPtrList<RectValues> oldValues;
676
QPtrList<KPObject> objects;
677
RectValues newValues;
681
class KPrDeletePageCmd : public KNamedCommand
684
KPrDeletePageCmd( const QString &_name,int _pos, KPrPage *page, KPresenterDoc *_doc );
687
virtual void execute();
688
virtual void unexecute();
696
class KPrInsertPageCmd : public KNamedCommand
699
KPrInsertPageCmd( const QString &_name,int _pos, KPrPage *page, KPresenterDoc *_doc );
702
virtual void execute();
703
virtual void unexecute();
710
class KPrMovePageCmd : public KNamedCommand
713
KPrMovePageCmd( const QString &_name,int _oldpos,int newPos, KPrPage *page, KPresenterDoc *_doc );
716
virtual void execute();
717
virtual void unexecute();
725
class KPrPasteTextCommand : public KoTextDocCommand
728
KPrPasteTextCommand( KoTextDocument *d, int parag, int idx,
729
const QCString & data );
730
~KPrPasteTextCommand() {}
731
KoTextCursor *execute( KoTextCursor *c );
732
KoTextCursor *unexecute( KoTextCursor *c );
737
// filled in by execute(), for unexecute()
740
KoParagLayout m_oldParagLayout;
744
* Command to change variable setting
746
class KPrChangeStartingPageCommand : public KNamedCommand
749
KPrChangeStartingPageCommand( const QString &name, KPresenterDoc *_doc,
750
int _oldStartingPage, int _newStartingPage);
751
~KPrChangeStartingPageCommand(){}
756
KPresenterDoc *m_doc;
762
* Command to display link setting
764
class KPrChangeVariableSettingsCommand : public KNamedCommand
767
enum VariableProperties { VS_DISPLAYLINK, VS_UNDERLINELINK, VS_DISPLAYCOMMENT, VS_DISPLAYFIELDCODE};
768
KPrChangeVariableSettingsCommand( const QString &name, KPresenterDoc *_doc, bool _oldValue,
769
bool _newValue, VariableProperties _type);
770
~KPrChangeVariableSettingsCommand(){}
775
void changeValue( bool b );
776
KPresenterDoc *m_doc;
777
VariableProperties type;
783
* Command to change title page name
785
class KPrChangeTitlePageNameCommand : public KNamedCommand
788
KPrChangeTitlePageNameCommand( const QString &name, KPresenterDoc *_doc, const QString &_oldPageName,
789
const QString &_newPageName, KPrPage *_page);
790
~KPrChangeTitlePageNameCommand(){}
795
KPresenterDoc *m_doc;
801
class KPrChangeCustomVariableValue : public KNamedCommand
804
KPrChangeCustomVariableValue( const QString &name, KPresenterDoc *_doc,const QString & _oldValue,
805
const QString & _newValue, KoCustomVariable *var);
810
KPresenterDoc *m_doc;
813
KoCustomVariable *m_var;
816
class KPrChangeLinkVariable : public KNamedCommand
819
KPrChangeLinkVariable( const QString &name, KPresenterDoc *_doc,const QString & _oldHref,
820
const QString & _newHref, const QString & _oldLink,const QString &_newLink, KoLinkVariable *var);
821
~KPrChangeLinkVariable(){};
825
KPresenterDoc *m_doc;
830
KoLinkVariable *m_var;
833
class KPrStickyObjCommand : public KNamedCommand
836
KPrStickyObjCommand( const QString &_name, QPtrList<KPObject> &_objects, bool sticky,
837
KPrPage*_page,KPresenterDoc *_doc );
839
~KPrStickyObjCommand();
842
void stickObj(KPObject *_obj);
843
void unstickObj(KPObject *_obj);
845
QPtrList<KPObject> objects;
847
KPresenterDoc *m_doc;
851
class KPrNameObjectCommand : public KNamedCommand
854
KPrNameObjectCommand( const QString &_name, const QString &_objectName, KPObject *_obj, KPresenterDoc *_doc );
855
~KPrNameObjectCommand();
859
QString oldObjectName, newObjectName;
865
class KPrHideShowHeaderFooter : public KNamedCommand
868
KPrHideShowHeaderFooter( const QString &name, KPresenterDoc *_doc, bool _newValue,KPTextObject *_textObject);
869
~KPrHideShowHeaderFooter(){};
873
KPresenterDoc *m_doc;
874
KPTextObject *m_textObject;
878
class KPrFlipObjectCommand : public KNamedCommand
881
KPrFlipObjectCommand( const QString &name, KPresenterDoc *_doc, bool _horizontal ,
882
QPtrList<KPObject> &_objects );
883
~KPrFlipObjectCommand();
888
KPresenterDoc *m_doc;
889
QPtrList<KPObject> objects;
894
class KPrGeometryPropertiesCommand : public KNamedCommand
897
enum KgpType { ProtectSize, KeepRatio};
898
KPrGeometryPropertiesCommand( const QString &_name, QValueList<bool> &_lst, QPtrList<KPObject> &_objects,
899
bool _newValue, KPresenterDoc *_doc, KgpType _type );
900
~KPrGeometryPropertiesCommand();
902
virtual void execute();
903
virtual void unexecute();
906
QValueList<bool> list;
907
QPtrList<KPObject> objects;
913
class KPrProtectContentCommand : public KNamedCommand
916
KPrProtectContentCommand( const QString &_name, bool _protectContent, KPTextObject *_obj, KPresenterDoc *_doc );
918
~KPrProtectContentCommand();
919
virtual void execute();
920
virtual void unexecute();
924
KPTextObject *objects;
928
class KPrCloseObjectCommand : public KNamedCommand
931
KPrCloseObjectCommand( const QString &_name, KPObject *_obj, KPresenterDoc *_doc );
933
~KPrCloseObjectCommand();
934
virtual void execute();
935
virtual void unexecute();
938
void closeObject(bool close);
945
struct MarginsStruct {
947
MarginsStruct( KPTextObject *obj );
948
MarginsStruct( double _left, double top, double right, double bottom );
955
class KPrChangeMarginCommand : public KNamedCommand
958
KPrChangeMarginCommand( const QString &name, KPTextObject *_obj, MarginsStruct _MarginsBegin,
959
MarginsStruct _MarginsEnd, KPresenterDoc *_doc );
960
~KPrChangeMarginCommand() {}
962
virtual void execute();
963
virtual void unexecute();
966
MarginsStruct m_marginsBegin;
967
MarginsStruct m_marginsEnd;
969
KPresenterDoc *m_doc;
973
class KPrChangeVerticalAlignmentCommand : public KNamedCommand
976
KPrChangeVerticalAlignmentCommand( const QString &name, KPTextObject *_obj, VerticalAlignmentType _oldAlign,
977
VerticalAlignmentType _newAlign, KPresenterDoc *_doc);
978
~KPrChangeVerticalAlignmentCommand() {}
980
virtual void execute();
981
virtual void unexecute();
984
VerticalAlignmentType m_oldAlign;
985
VerticalAlignmentType m_newAlign;
987
KPresenterDoc *m_doc;
991
class KPrChangeTabStopValueCommand : public KNamedCommand
994
KPrChangeTabStopValueCommand( const QString &name, double _oldValue, double _newValue, KPresenterDoc *_doc);
996
~KPrChangeTabStopValueCommand() {}
998
virtual void execute();
999
virtual void unexecute();
1001
KPresenterDoc *m_doc;