1
/* This file is part of the KDE project
2
Copyright (C) 2002 Laurent Montel <lmontel@mandrakesoft.com>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Library General Public
6
License as published by the Free Software Foundation; either
7
version 2 of the License, or (at your option) any later version.
9
This library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
Library General Public License for more details.
14
You should have received a copy of the GNU Library General Public License
15
along with this library; see the file COPYING.LIB. If not, write to
16
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17
Boston, MA 02111-1307, USA.
21
#include "kivio_command.h"
22
#include "kivio_page.h"
23
#include "kivio_map.h"
24
#include "kivio_doc.h"
25
#include "kivio_layer.h"
27
KivioChangePageNameCommand::KivioChangePageNameCommand(const QString &_name, const QString & _oldPageName, const QString & _newPageName, KivioPage *_page)
28
: KNamedCommand( _name ),
29
oldPageName(_oldPageName ),
30
newPageName(_newPageName ),
36
KivioChangePageNameCommand::~KivioChangePageNameCommand()
40
void KivioChangePageNameCommand::execute()
42
m_page->setPageName( newPageName );
45
void KivioChangePageNameCommand::unexecute()
47
m_page->setPageName( oldPageName);
51
KivioHidePageCommand::KivioHidePageCommand(const QString &_name, KivioPage *_page)
52
: KNamedCommand( _name ),
57
KivioHidePageCommand::~KivioHidePageCommand()
61
void KivioHidePageCommand::execute()
63
m_page->setHidePage( true );
66
void KivioHidePageCommand::unexecute()
68
m_page->setHidePage( false );
71
KivioShowPageCommand::KivioShowPageCommand( const QString &_name, KivioPage *_page)
72
: KivioHidePageCommand( _name, _page)
77
KivioAddPageCommand::KivioAddPageCommand(const QString &_name, KivioPage *_page)
78
: KNamedCommand( _name ),
83
KivioAddPageCommand::~KivioAddPageCommand()
87
void KivioAddPageCommand::execute()
89
m_page->map()->insertPage( m_page );
90
m_page->doc()->insertPage( m_page );
93
void KivioAddPageCommand::unexecute()
95
m_page->map()->takePage( m_page );
96
m_page->doc()->takePage( m_page );
99
KivioRemovePageCommand::KivioRemovePageCommand(const QString &_name, KivioPage *_page)
100
: KNamedCommand( _name ),
105
KivioRemovePageCommand::~KivioRemovePageCommand()
109
void KivioRemovePageCommand::execute()
111
m_page->map()->takePage( m_page );
112
m_page->doc()->takePage( m_page );
115
void KivioRemovePageCommand::unexecute()
117
m_page->map()->insertPage( m_page );
118
m_page->doc()->insertPage( m_page );
122
KivioAddStencilCommand::KivioAddStencilCommand(const QString &_name, KivioPage *_page, KivioLayer * _layer, KivioStencil *_stencil )
123
: KNamedCommand( _name ),
130
KivioAddStencilCommand::~KivioAddStencilCommand()
134
void KivioAddStencilCommand::execute()
136
m_layer->insertStencil( m_stencil );
137
m_page->doc()->updateView(m_page);
138
m_stencil->unselect();
139
m_stencil->searchForConnections(m_page, 4.0); //FIXME: The threshold should probably be zoomed....
140
m_page->doc()->slotSelectionChanged();
143
void KivioAddStencilCommand::unexecute()
145
m_layer->takeStencilFromList( m_stencil );
146
m_page->doc()->updateView(m_page);
147
m_stencil->unselect();
148
m_page->doc()->slotSelectionChanged();
151
KivioRemoveStencilCommand::KivioRemoveStencilCommand(const QString &_name, KivioPage *_page, KivioLayer * _layer, KivioStencil *_stencil )
152
: KivioAddStencilCommand(_name, _page, _layer, _stencil )
156
KivioChangeStencilTextCommand::KivioChangeStencilTextCommand( const QString &_name, KivioStencil *_stencil, const QString & _oldText, const QString & _newText, KivioPage *_page)
157
: KNamedCommand( _name ),
158
m_stencil( _stencil),
165
KivioChangeStencilTextCommand::~KivioChangeStencilTextCommand()
169
void KivioChangeStencilTextCommand::execute()
171
m_stencil->setText( newText );
172
m_page->doc()->updateView(m_page);
175
void KivioChangeStencilTextCommand::unexecute()
177
m_stencil->setText( oldText );
178
m_page->doc()->updateView(m_page);
182
KivioAddLayerCommand::KivioAddLayerCommand( const QString &_name, KivioPage *_page, KivioLayer * _layer, int _pos )
183
:KNamedCommand( _name ),
190
KivioAddLayerCommand::~KivioAddLayerCommand()
194
void KivioAddLayerCommand::execute()
196
m_page->insertLayer( layerPos-1, m_layer );
197
m_page->doc()->updateView(m_page);
198
m_page->doc()->resetLayerPanel();
202
void KivioAddLayerCommand::unexecute()
204
m_page->takeLayer( m_layer );
205
m_page->doc()->updateView(m_page);
206
m_page->doc()->resetLayerPanel();
210
KivioRemoveLayerCommand::KivioRemoveLayerCommand( const QString &_name, KivioPage *_page, KivioLayer * _layer, int _pos )
211
:KivioAddLayerCommand( _name, _page, _layer, _pos )
215
KivioRenameLayerCommand::KivioRenameLayerCommand( const QString &_name, KivioLayer * _layer, const QString & _oldName, const QString & _newName)
216
:KNamedCommand( _name ),
223
KivioRenameLayerCommand::~KivioRenameLayerCommand()
227
void KivioRenameLayerCommand::execute()
229
m_layer->setName(newName);
230
m_layer->page()->doc()->resetLayerPanel();
233
void KivioRenameLayerCommand::unexecute()
235
m_layer->setName(oldName);
236
m_layer->page()->doc()->resetLayerPanel();
239
KivioResizeStencilCommand::KivioResizeStencilCommand( const QString &_name, KivioStencil *_stencil, KivioRect _initSize, KivioRect _endSize, KivioPage *_page)
240
:KNamedCommand( _name ),
241
m_stencil( _stencil),
242
initSize( _initSize),
248
KivioResizeStencilCommand::~KivioResizeStencilCommand()
252
void KivioResizeStencilCommand::execute()
254
m_stencil->setDimensions( endSize.w(), endSize.h() );
255
m_stencil->setPosition( endSize.x(), endSize.y() );
256
m_page->doc()->updateView(m_page);
259
void KivioResizeStencilCommand::unexecute()
261
m_stencil->setDimensions( initSize.w(), initSize.h() );
262
m_stencil->setPosition( initSize.x(), initSize.y() );
263
m_page->doc()->updateView(m_page);
267
KivioMoveStencilCommand::KivioMoveStencilCommand( const QString &_name, KivioStencil *_stencil, KivioRect _initSize, KivioRect _endSize, KivioPage *_page)
268
:KNamedCommand( _name ),
269
m_stencil( _stencil),
270
initSize( _initSize),
276
KivioMoveStencilCommand::~KivioMoveStencilCommand()
280
void KivioMoveStencilCommand::execute()
282
m_stencil->setDimensions( endSize.w(), endSize.h() );
283
m_stencil->setPosition( endSize.x(), endSize.y() );
284
m_page->doc()->updateView(m_page);
287
void KivioMoveStencilCommand::unexecute()
289
m_stencil->setDimensions( initSize.w(), initSize.h() );
290
m_stencil->setPosition( initSize.x(), initSize.y() );
291
m_page->doc()->updateView(m_page);
294
KivioChangeLayoutCommand::KivioChangeLayoutCommand( const QString &_name, KivioPage *_page, KoPageLayout _oldLayout, KoPageLayout _newLayout)
295
:KNamedCommand( _name),
297
oldLayout( _oldLayout),
298
newLayout( _newLayout)
302
KivioChangeLayoutCommand::~KivioChangeLayoutCommand()
306
void KivioChangeLayoutCommand::execute()
308
m_page->setPaperLayout(newLayout);
311
void KivioChangeLayoutCommand::unexecute()
313
m_page->setPaperLayout(oldLayout);
316
KivioChangeStencilHAlignmentCommand::KivioChangeStencilHAlignmentCommand( const QString &_name, KivioPage *_page, KivioStencil * _stencil, int _oldAlign, int _newAlign)
317
:KNamedCommand( _name),
319
m_stencil( _stencil ),
320
oldAlign( _oldAlign),
325
KivioChangeStencilHAlignmentCommand::~KivioChangeStencilHAlignmentCommand()
329
void KivioChangeStencilHAlignmentCommand::execute()
331
m_stencil->setHTextAlign( newAlign );
332
m_page->doc()->updateView(m_page);
333
m_page->doc()->slotSelectionChanged();
336
void KivioChangeStencilHAlignmentCommand::unexecute()
338
m_stencil->setHTextAlign( oldAlign );
339
m_page->doc()->updateView(m_page);
340
m_page->doc()->slotSelectionChanged();
343
KivioChangeStencilVAlignmentCommand::KivioChangeStencilVAlignmentCommand( const QString &_name, KivioPage *_page, KivioStencil * _stencil, int _oldAlign, int _newAlign)
344
:KNamedCommand( _name),
346
m_stencil( _stencil ),
347
oldAlign( _oldAlign),
352
KivioChangeStencilVAlignmentCommand::~KivioChangeStencilVAlignmentCommand()
356
void KivioChangeStencilVAlignmentCommand::execute()
358
m_stencil->setHTextAlign( newAlign );
359
m_page->doc()->updateView(m_page);
360
m_page->doc()->slotSelectionChanged();
363
void KivioChangeStencilVAlignmentCommand::unexecute()
365
m_stencil->setHTextAlign( oldAlign );
366
m_page->doc()->updateView(m_page);
367
m_page->doc()->slotSelectionChanged();
371
KivioChangeStencilFontCommand::KivioChangeStencilFontCommand( const QString &_name, KivioPage *_page, KivioStencil * _stencil, const QFont &_oldFont, const QFont & _newFont)
372
:KNamedCommand( _name),
374
m_stencil( _stencil ),
380
KivioChangeStencilFontCommand::~KivioChangeStencilFontCommand()
384
void KivioChangeStencilFontCommand::execute()
386
m_stencil->setTextFont( newFont );
387
m_page->doc()->updateView(m_page);
388
m_page->doc()->slotSelectionChanged();
391
void KivioChangeStencilFontCommand::unexecute()
393
m_stencil->setTextFont( oldFont );
394
m_page->doc()->updateView(m_page);
395
m_page->doc()->slotSelectionChanged();
398
KivioChangeStencilColorCommand::KivioChangeStencilColorCommand( const QString &_name, KivioPage *_page, KivioStencil * _stencil, const QColor &_oldColor, const QColor & _newColor, ColorType _type)
399
:KNamedCommand( _name),
401
m_stencil( _stencil ),
402
oldColor( _oldColor),
403
newColor( _newColor),
408
KivioChangeStencilColorCommand::~KivioChangeStencilColorCommand()
412
void KivioChangeStencilColorCommand::execute()
417
m_stencil->setTextColor( newColor );
420
m_stencil->setBGColor( newColor );
423
m_stencil->setFGColor( newColor );
426
m_page->doc()->updateView(m_page);
427
m_page->doc()->slotSelectionChanged();
430
void KivioChangeStencilColorCommand::unexecute()
435
m_stencil->setTextColor( oldColor );
438
m_stencil->setBGColor( oldColor );
441
m_stencil->setFGColor( oldColor );
444
m_page->doc()->updateView(m_page);
445
m_page->doc()->slotSelectionChanged();
449
KivioChangeLineWidthCommand::KivioChangeLineWidthCommand( const QString &_name,
450
KivioPage *_page, KivioStencil * _stencil, double _oldValue, double _newValue)
451
:KNamedCommand( _name),
453
m_stencil( _stencil ),
454
oldValue( _oldValue),
459
KivioChangeLineWidthCommand::~KivioChangeLineWidthCommand()
463
void KivioChangeLineWidthCommand::execute()
465
m_stencil->setLineWidth( newValue );
466
m_page->doc()->updateView(m_page);
467
m_page->doc()->slotSelectionChanged();
470
void KivioChangeLineWidthCommand::unexecute()
472
m_stencil->setLineWidth( oldValue );
473
m_page->doc()->updateView(m_page);
474
m_page->doc()->slotSelectionChanged();
478
KivioChangeBeginEndArrowCommand::KivioChangeBeginEndArrowCommand( const QString &_name, KivioPage *_page, KivioStencil * _stencil, int _oldArrow, int _newArrow, bool _beginArrow)
479
:KNamedCommand( _name),
481
m_stencil( _stencil ),
482
oldArrow( _oldArrow),
483
newArrow( _newArrow),
484
beginArrow(_beginArrow)
488
KivioChangeBeginEndArrowCommand::~KivioChangeBeginEndArrowCommand()
492
void KivioChangeBeginEndArrowCommand::execute()
495
m_stencil->setStartAHType(newArrow);
497
m_stencil->setEndAHType(newArrow);
498
m_page->doc()->updateView(m_page);
499
m_page->doc()->slotSelectionChanged();
502
void KivioChangeBeginEndArrowCommand::unexecute()
505
m_stencil->setStartAHType(oldArrow);
507
m_stencil->setEndAHType(oldArrow);
508
m_page->doc()->updateView(m_page);
509
m_page->doc()->slotSelectionChanged();
513
KivioChangeBeginEndSizeArrowCommand::KivioChangeBeginEndSizeArrowCommand( const QString &_name, KivioPage *_page, KivioStencil * _stencil, float _oldH,float _oldW, float _newH,float _newW, bool _beginArrow)
514
:KNamedCommand( _name),
516
m_stencil( _stencil ),
521
beginArrow(_beginArrow)
525
KivioChangeBeginEndSizeArrowCommand::~KivioChangeBeginEndSizeArrowCommand()
529
void KivioChangeBeginEndSizeArrowCommand::execute()
533
m_stencil->setStartAHWidth(newWidth);
534
m_stencil->setStartAHLength(newLength);
538
m_stencil->setEndAHWidth(newWidth);
539
m_stencil->setEndAHLength(newLength);
541
m_page->doc()->updateView(m_page);
542
m_page->doc()->slotSelectionChanged();
545
void KivioChangeBeginEndSizeArrowCommand::unexecute()
549
m_stencil->setStartAHWidth(oldWidth);
550
m_stencil->setStartAHLength(oldLength);
554
m_stencil->setEndAHWidth(oldWidth);
555
m_stencil->setEndAHLength(oldLength);
557
m_page->doc()->updateView(m_page);
558
m_page->doc()->slotSelectionChanged();
561
KivioChangeStencilProtectCommand::KivioChangeStencilProtectCommand( const QString &_name, KivioPage *_page, KivioStencil * _stencil, bool _state, KVP_TYPE _type)
562
:KNamedCommand( _name),
564
m_stencil( _stencil ),
570
void KivioChangeStencilProtectCommand::execute()
572
changeValue( m_bValue );
575
void KivioChangeStencilProtectCommand::unexecute()
577
changeValue( !m_bValue );
580
void KivioChangeStencilProtectCommand::changeValue( bool b )
585
m_stencil->protection()->setBit( kpX, b );
588
m_stencil->protection()->setBit( kpY, b );
591
m_stencil->protection()->setBit( kpWidth, b );
594
m_stencil->protection()->setBit( kpHeight, b );
597
m_stencil->protection()->setBit( kpAspect, b );
600
m_stencil->protection()->setBit( kpDeletion, b);
605
m_page->doc()->updateProtectPanelCheckBox();