summaryrefslogtreecommitdiffstats
path: root/kspread/commands.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kspread/commands.cpp')
-rw-r--r--kspread/commands.cpp946
1 files changed, 946 insertions, 0 deletions
diff --git a/kspread/commands.cpp b/kspread/commands.cpp
new file mode 100644
index 00000000..490bee81
--- /dev/null
+++ b/kspread/commands.cpp
@@ -0,0 +1,946 @@
+/* This file is part of the KDE project
+ Copyright 2004 Ariya Hidayat <[email protected]>
+ Copyright 2004 Laurent Montel <[email protected]>
+
+ 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.
+*/
+
+#include "commands.h"
+#include "damages.h"
+#include "kspread_canvas.h"
+#include "kspread_doc.h"
+#include "kspread_locale.h"
+#include "kspread_map.h"
+#include "kspread_sheet.h"
+#include "kspread_undo.h"
+#include "kspread_util.h"
+
+#include "kspread_sheetprint.h"
+
+using namespace KSpread;
+
+// ----- UndoWrapperCommand -----
+
+UndoWrapperCommand::UndoWrapperCommand( UndoAction* ua )
+{
+ undoAction = ua;
+}
+
+void UndoWrapperCommand::execute()
+{
+ // This is not really safe and functional, but UndoWrapperCommand
+ // is a workaround anyway. So leave it as it it (Ariya)
+ undoAction->redo();
+}
+
+void UndoWrapperCommand::unexecute()
+{
+ undoAction->undo();
+}
+
+TQString UndoWrapperCommand::name() const
+{
+ return undoAction->getName();
+}
+
+// ----- MergeCellsCommand -----
+
+MergeCellCommand::MergeCellCommand( Cell* c, int cs, int rs )
+{
+ cell = c;
+ colSpan = cs;
+ rowSpan = rs;
+ oldColSpan = cell->extraXCells();
+ oldRowSpan = cell->extraYCells();
+ if( cell )
+ {
+ TQRect area( cell->column(), cell->row(), cs+1, rs+1 );
+ rangeName = util_rangeName( area );
+ }
+}
+
+TQString MergeCellCommand::name() const
+{
+ if( rangeName.isEmpty() )
+ return i18n("Merge Cells");
+ else
+ return i18n("Merge Cells %1").arg( rangeName );
+}
+
+void MergeCellCommand::execute()
+{
+ Sheet* sheet = cell->sheet();
+ if( !sheet ) return;
+ sheet->changeMergedCell( cell->column(), cell->row(), colSpan, rowSpan);
+}
+
+void MergeCellCommand::unexecute()
+{
+ Sheet* sheet = cell->sheet();
+ if( !sheet ) return;
+ sheet->changeMergedCell( cell->column(), cell->row(), oldColSpan, oldRowSpan);
+}
+
+// ----- DissociateCellCommand -----
+
+DissociateCellCommand::DissociateCellCommand( Cell* c )
+{
+ cell = c;
+ oldColSpan = cell->extraXCells();
+ oldRowSpan = cell->extraYCells();
+}
+
+TQString DissociateCellCommand::name() const
+{
+ return i18n("Dissociate Cell");
+}
+
+void DissociateCellCommand::execute()
+{
+ Sheet* sheet = cell->sheet();
+ if( !sheet ) return;
+ sheet->changeMergedCell( cell->column(), cell->row(), 0, 0 );
+}
+
+void DissociateCellCommand::unexecute()
+{
+ Sheet* sheet = cell->sheet();
+ if( !sheet ) return;
+ sheet->changeMergedCell( cell->column(), cell->row(), oldColSpan, oldRowSpan);
+}
+
+// ----- RenameSheetCommand -----
+
+RenameSheetCommand::RenameSheetCommand( Sheet* s, const TQString &name )
+{
+ sheet = s;
+ if( s ) oldName = s->sheetName();
+ newName = name;
+}
+
+TQString RenameSheetCommand::name() const
+{
+ return i18n("Rename Sheet");
+}
+
+void RenameSheetCommand::execute()
+{
+ if( sheet )
+ sheet->setSheetName( newName );
+}
+
+void RenameSheetCommand::unexecute()
+{
+ if( sheet )
+ sheet->setSheetName( oldName );
+}
+
+// ----- HideSheetCommand -----
+
+HideSheetCommand::HideSheetCommand( Sheet* sheet )
+{
+ doc = sheet->doc();
+ sheetName = sheet->sheetName();
+}
+
+void HideSheetCommand::execute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+
+ sheet->hideSheet( true );
+}
+
+void HideSheetCommand::unexecute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+
+ sheet->hideSheet( false );
+}
+
+TQString HideSheetCommand::name() const
+{
+ TQString n = TQString( i18n("Hide Sheet %1") ).arg( sheetName );
+ if( n.length() > 64 ) n = i18n("Hide Sheet");
+ return n;
+}
+
+// ----- ShowSheetCommand -----
+
+ShowSheetCommand::ShowSheetCommand( Sheet* sheet )
+{
+ doc = sheet->doc();
+ sheetName = sheet->sheetName();
+}
+
+void ShowSheetCommand::execute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+
+ sheet->hideSheet( false );
+}
+
+void ShowSheetCommand::unexecute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+
+ sheet->hideSheet( true );
+}
+
+TQString ShowSheetCommand::name() const
+{
+ TQString n = TQString( i18n("Show Sheet %1") ).arg( sheetName );
+ if( n.length() > 64 ) n = i18n("Show Sheet");
+ return n;
+}
+
+
+// ----- AddSheetCommand -----
+
+AddSheetCommand::AddSheetCommand( Sheet* s )
+{
+ sheet = s;
+ doc = sheet->doc();
+ doc->map()->addSheet( s );
+}
+
+void AddSheetCommand::execute()
+{
+ sheet->workbook()->insertSheet( sheet );
+ doc->insertSheet( sheet );
+}
+
+void AddSheetCommand::unexecute()
+{
+ sheet->workbook()->takeSheet( sheet );
+ doc->takeSheet( sheet );
+}
+
+TQString AddSheetCommand::name() const
+{
+ return i18n("Add Sheet");
+}
+
+
+// ----- RemoveSheetCommand -----
+
+RemoveSheetCommand::RemoveSheetCommand( Sheet* s )
+{
+ sheet = s;
+ doc = sheet->doc();
+}
+
+void RemoveSheetCommand::execute()
+{
+ sheet->workbook()->takeSheet( sheet );
+ doc->takeSheet( sheet );
+}
+
+void RemoveSheetCommand::unexecute()
+{
+ sheet->workbook()->insertSheet( sheet );
+ doc->insertSheet( sheet );
+}
+
+TQString RemoveSheetCommand::name() const
+{
+ return i18n("Remove Sheet");
+}
+
+// ----- SheetPropertiesCommand -----
+
+SheetPropertiesCommand::SheetPropertiesCommand( Doc* d, Sheet* s )
+{
+ sheet = s;
+ doc = d;
+ oldDirection = newDirection = sheet->layoutDirection();
+ oldAutoCalc = newAutoCalc = sheet->getAutoCalc();
+ oldShowGrid = newShowGrid = sheet->getShowGrid();
+ oldShowPageBorders = newShowPageBorders = sheet->isShowPageBorders();
+ oldShowFormula = newShowFormula = sheet->getShowFormula();
+ oldHideZero = newHideZero = sheet->getHideZero();
+ oldShowFormulaIndicator = newShowFormulaIndicator = sheet->getShowFormulaIndicator();
+ oldShowCommentIndicator = newShowCommentIndicator = sheet->getShowCommentIndicator();
+ oldColumnAsNumber = newColumnAsNumber = sheet->getShowColumnNumber();
+ oldLcMode = newLcMode = sheet->getLcMode();
+ oldCapitalizeFirstLetter = newCapitalizeFirstLetter = sheet->getFirstLetterUpper();
+}
+
+TQString SheetPropertiesCommand::name() const
+{
+ return i18n("Change Sheet Properties");
+}
+
+void SheetPropertiesCommand::setLayoutDirection( Sheet::LayoutDirection dir )
+{
+ newDirection = dir;
+}
+
+void SheetPropertiesCommand::setAutoCalc( bool b )
+{
+ newAutoCalc = b;
+}
+
+void SheetPropertiesCommand::setShowGrid( bool b )
+{
+ newShowGrid = b;
+}
+
+void SheetPropertiesCommand::setShowPageBorders( bool b )
+{
+ newShowPageBorders = b;
+}
+
+void SheetPropertiesCommand::setShowFormula( bool b )
+{
+ newShowFormula = b;
+}
+
+void SheetPropertiesCommand::setHideZero( bool b )
+{
+ newHideZero = b;
+}
+
+void SheetPropertiesCommand::setShowFormulaIndicator( bool b )
+{
+ newShowFormulaIndicator = b;
+}
+
+void SheetPropertiesCommand::setShowCommentIndicator( bool b )
+{
+ newShowCommentIndicator = b;
+}
+
+void SheetPropertiesCommand::setColumnAsNumber( bool b )
+{
+ newColumnAsNumber = b;
+}
+
+void SheetPropertiesCommand::setLcMode( bool b )
+{
+ newLcMode = b;
+}
+
+void SheetPropertiesCommand::setCapitalizeFirstLetter( bool b )
+{
+ newCapitalizeFirstLetter = b;
+}
+
+void SheetPropertiesCommand::execute()
+{
+ sheet->setLayoutDirection( newDirection );
+ sheet->setAutoCalc( newAutoCalc );
+ sheet->setShowGrid( newShowGrid );
+ sheet->setShowPageBorders( newShowPageBorders );
+ sheet->setShowFormula( newShowFormula );
+ sheet->setHideZero( newHideZero );
+ sheet->setShowFormulaIndicator( newShowFormulaIndicator );
+ sheet->setShowCommentIndicator( newShowCommentIndicator );
+ sheet->setShowColumnNumber( newColumnAsNumber );
+ sheet->setLcMode( newLcMode );
+ sheet->setFirstLetterUpper( newCapitalizeFirstLetter );
+ doc->addDamage( new SheetDamage( sheet, SheetDamage::PropertiesChanged ) );
+}
+
+void SheetPropertiesCommand::unexecute()
+{
+ sheet->setLayoutDirection( oldDirection );
+ sheet->setAutoCalc( oldAutoCalc );
+ sheet->setShowGrid( oldShowGrid );
+ sheet->setShowPageBorders( oldShowPageBorders );
+ sheet->setShowFormula( oldShowFormula );
+ sheet->setHideZero( oldHideZero );
+ sheet->setShowFormulaIndicator( oldShowFormulaIndicator );
+ sheet->setShowCommentIndicator( oldShowCommentIndicator );
+ sheet->setShowColumnNumber( oldColumnAsNumber );
+ sheet->setLcMode( oldLcMode );
+ sheet->setFirstLetterUpper( oldCapitalizeFirstLetter );
+ doc->addDamage( new SheetDamage( sheet, SheetDamage::PropertiesChanged ) );
+}
+
+
+// ----- InsertColumnCommand -----
+
+InsertColumnCommand::InsertColumnCommand( Sheet* s , unsigned int _column, unsigned int _nbCol )
+{
+ doc = s->doc();
+ sheetName = s->sheetName();
+ insertPosColumn = _column;
+ nbColumnInserted = _nbCol;
+}
+
+void InsertColumnCommand::execute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+ sheet->insertColumn( insertPosColumn,nbColumnInserted);
+}
+
+void InsertColumnCommand::unexecute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+ sheet->removeColumn( insertPosColumn,nbColumnInserted );
+}
+
+TQString InsertColumnCommand::name() const
+{
+ return i18n("Insert Columns");
+}
+
+
+// ----- DefinePrintRangeCommand -----
+
+
+DefinePrintRangeCommand::DefinePrintRangeCommand( Sheet *s )
+{
+ doc = s->doc();
+ sheetName = s->sheetName();
+ printRange = s->print()->printRange();
+}
+
+void DefinePrintRangeCommand::execute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+ sheet->print()->setPrintRange( printRangeRedo );
+
+}
+
+void DefinePrintRangeCommand::unexecute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+ printRangeRedo = sheet->print()->printRange();
+ sheet->print()->setPrintRange( printRange );
+}
+
+TQString DefinePrintRangeCommand::name() const
+{
+ return i18n("Set Page Layout");
+}
+
+// ----- PaperLayoutCommand -----
+
+
+PaperLayoutCommand::PaperLayoutCommand( Sheet *s )
+{
+ doc = s->doc();
+ sheetName = s->sheetName();
+ pl = s->print()->paperLayout();
+ hf = s->print()->headFootLine();
+ unit = doc->unit();
+ printGrid = s->print()->printGrid();
+ printCommentIndicator = s->print()->printCommentIndicator();
+ printFormulaIndicator = s->print()->printFormulaIndicator();
+ printRange = s->print()->printRange();
+ printRepeatColumns = s->print()->printRepeatColumns();
+ printRepeatRows = s->print()->printRepeatRows();
+ zoom = s->print()->zoom();
+ pageLimitX = s->print()->pageLimitX();
+ pageLimitY = s->print()->pageLimitY();
+}
+
+void PaperLayoutCommand::execute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+ SheetPrint* print = sheet->print();
+
+ print->setPaperLayout( plRedo.ptLeft, plRedo.ptTop,
+ plRedo.ptRight, plRedo.ptBottom,
+ plRedo.format, plRedo.orientation );
+
+ print->setHeadFootLine( hfRedo.headLeft, hfRedo.headMid, hfRedo.headRight,
+ hfRedo.footLeft, hfRedo.footMid, hfRedo.footRight );
+
+ doc->setUnit( unitRedo );
+
+ print->setPrintGrid( printGridRedo );
+ print->setPrintCommentIndicator( printCommentIndicatorRedo );
+ print->setPrintFormulaIndicator( printFormulaIndicatorRedo );
+
+ print->setPrintRange( printRangeRedo );
+ print->setPrintRepeatColumns( printRepeatColumnsRedo );
+ print->setPrintRepeatRows( printRepeatRowsRedo );
+
+ print->setZoom( zoomRedo );
+
+ print->setPageLimitX( pageLimitX );
+ print->setPageLimitY( pageLimitY );
+}
+
+void PaperLayoutCommand::unexecute()
+{
+ Sheet* sheet = doc->map()->findSheet( sheetName );
+ if( !sheet ) return;
+ SheetPrint* print = sheet->print();
+ plRedo = print->paperLayout();
+ print->setPaperLayout( pl.ptLeft, pl.ptTop,
+ pl.ptRight, pl.ptBottom,
+ pl.format, pl.orientation );
+
+ hfRedo = print->headFootLine();
+ print->setHeadFootLine( hf.headLeft, hf.headMid, hf.headRight,
+ hf.footLeft, hf.footMid, hf.footRight );
+
+ unitRedo = doc->unit();
+ doc->setUnit( unit );
+
+ printGridRedo = print->printGrid();
+ print->setPrintGrid( printGrid );
+
+ printCommentIndicatorRedo = print->printCommentIndicator();
+ print->setPrintCommentIndicator( printCommentIndicator );
+
+ printFormulaIndicatorRedo = print->printFormulaIndicator();
+ print->setPrintFormulaIndicator( printFormulaIndicator );
+
+ printRangeRedo = print->printRange();
+ print->setPrintRange( printRange );
+
+ printRepeatColumnsRedo = print->printRepeatColumns();
+ print->setPrintRepeatColumns( printRepeatColumns );
+
+ printRepeatRowsRedo = print->printRepeatRows();
+ print->setPrintRepeatRows( printRepeatRows );
+
+ zoomRedo = print->zoom();
+ print->setZoom( zoom );
+
+ pageLimitXRedo = print->pageLimitX();
+ print->setPageLimitX( pageLimitX );
+
+ pageLimitYRedo = print->pageLimitY();
+ print->setPageLimitY( pageLimitY );
+
+}
+
+TQString PaperLayoutCommand::name() const
+{
+ return i18n("Set Page Layout");
+}
+
+LinkCommand::LinkCommand( Cell* c, const TQString& text, const TQString& link )
+{
+ cell = c;
+ oldText = cell->text();
+ oldLink = cell->link();
+ newText = text;
+ newLink = link;
+
+ Sheet* s = cell->sheet();
+ if( s ) doc = s->doc();
+}
+
+void LinkCommand::execute()
+{
+ if( !cell ) return;
+
+ if( !newText.isEmpty() )
+ cell->setCellText( newText );
+ cell->setLink( newLink );
+
+ doc->addDamage( new CellDamage( cell ) );
+}
+
+void LinkCommand::unexecute()
+{
+ if( !cell ) return;
+
+ cell->setCellText( oldText );
+ cell->setLink( oldLink );
+
+ doc->addDamage( new CellDamage( cell ) );
+}
+
+TQString LinkCommand::name() const
+{
+ return newLink.isEmpty() ? i18n("Remove Link") : i18n("Set Link");
+}
+
+ChangeObjectGeometryCommand::ChangeObjectGeometryCommand( EmbeddedObject *_obj, const KoPoint &_m_diff, const KoSize &_r_diff )
+ : m_diff( _m_diff ), r_diff( _r_diff )
+{
+ obj = _obj;
+ obj->incCmdRef();
+ doc = obj->sheet()->doc();
+}
+
+ChangeObjectGeometryCommand::~ChangeObjectGeometryCommand()
+{
+ obj->decCmdRef();
+}
+
+void ChangeObjectGeometryCommand::execute()
+{
+ doc->repaint( obj->geometry() );
+
+ KoRect geometry = obj->geometry();
+ geometry.moveBy( m_diff.x(), m_diff.y() );
+ geometry.setWidth( geometry.width() + r_diff.width() );
+ geometry.setHeight( geometry.height() + r_diff.height() );
+ obj->setGeometry( geometry );
+
+// if ( object->isSelected())
+// doc->updateObjectStatusBarItem();
+ doc->repaint( obj );
+}
+
+void ChangeObjectGeometryCommand::unexecute()
+{
+ doc->repaint( obj->geometry() );
+
+ KoRect geometry = obj->geometry();
+ geometry.moveBy( -m_diff.x(), -m_diff.y() );
+ geometry.setWidth( geometry.width() - r_diff.width() );
+ geometry.setHeight( geometry.height() - r_diff.height() );
+ obj->setGeometry( geometry );
+
+// if ( object->isSelected())
+// doc->updateObjectStatusBarItem();
+ doc->repaint( obj );
+}
+
+TQString ChangeObjectGeometryCommand::name() const
+{
+ /*if ( fabs( obj->geometry().width() - newGeometry.width() )<1e-3 && fabs( obj->geometry().height() - newGeometry.height() ) < 1e-3 )
+ return i18n("Move Object");
+ else */
+ return i18n("Resize Object");
+}
+
+RemoveObjectCommand::RemoveObjectCommand( EmbeddedObject *_obj, bool _cut )
+{
+ obj = _obj;
+ cut = _cut;
+ doc = obj->sheet()->doc();
+}
+
+RemoveObjectCommand::~RemoveObjectCommand()
+{
+ if ( !executed )
+ return;
+ //kdDebug() << "*********Deleting object..." << endl;
+ if ( obj->getType() == OBJECT_CHART )
+ {
+ EmbeddedKOfficeObject *chart = dynamic_cast<EmbeddedKOfficeObject *>(obj);
+ chart->embeddedObject()->setDeleted(true);
+ }
+
+ delete obj;
+}
+
+void RemoveObjectCommand::execute()
+{
+
+// I don't think we need this:
+// Make shure that this child has no active embedded view -> activate ourselfs
+// doc()->emitBeginOperation( false );
+// partManager()->setActivePart( koDocument(), this );
+// partManager()->setSelectedPart( 0 );
+// doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) );
+
+ doc->embeddedObjects().removeRef( obj );
+ if ( obj->getType() == OBJECT_CHART || obj->getType()== OBJECT_KOFFICE_PART)
+ {
+ EmbeddedKOfficeObject *eko = dynamic_cast<EmbeddedKOfficeObject *>(obj);
+ eko->embeddedObject()->setDeleted(true);
+ }
+
+ obj->setSelected( false );
+ doc->repaint( obj );
+ executed = true;
+}
+
+void RemoveObjectCommand::unexecute()
+{
+ doc->embeddedObjects().append( obj );
+ if ( obj->getType() == OBJECT_CHART || obj->getType()== OBJECT_KOFFICE_PART)
+ {
+ EmbeddedKOfficeObject *eko = dynamic_cast<EmbeddedKOfficeObject *>(obj);
+ eko->embeddedObject()->setDeleted(false);
+ }
+ doc->repaint( obj );
+ executed = false;
+}
+
+TQString RemoveObjectCommand::name() const
+{
+ if ( cut )
+ return i18n("Cut Object");
+ else
+ return i18n("Remove Object");
+}
+
+InsertObjectCommand::InsertObjectCommand( const KoRect& _geometry, KoDocumentEntry& _entry, Canvas *_canvas ) //child
+{
+ geometry = _geometry;
+ entry = _entry;
+ canvas = _canvas;
+ type = OBJECT_KOFFICE_PART;
+ obj = 0;
+}
+
+InsertObjectCommand::InsertObjectCommand(const KoRect& _geometry, KoDocumentEntry& _entry, const TQRect& _data, Canvas *_canvas ) //chart
+{
+ geometry = _geometry;
+ entry = _entry;
+ data = _data;
+ canvas = _canvas;
+ type = OBJECT_CHART;
+ obj = 0;
+}
+
+InsertObjectCommand::InsertObjectCommand( const KoRect& _geometry , KURL& _file, Canvas *_canvas ) //picture
+{
+ //In the case of pictures, only the top left point of the rectangle is relevant
+ geometry = _geometry;
+ file = _file;
+ canvas = _canvas;
+ type = OBJECT_PICTURE;
+ obj = 0;
+}
+
+InsertObjectCommand::~InsertObjectCommand()
+{
+ if ( executed )
+ return;
+ //kdDebug() << "*********Deleting object..." << endl;
+ if ( obj->getType() == OBJECT_CHART )
+ {
+ EmbeddedKOfficeObject *chart = dynamic_cast<EmbeddedKOfficeObject *>(obj);
+ chart->embeddedObject()->setDeleted(true);
+ }
+
+ delete obj;
+}
+
+void InsertObjectCommand::execute()
+{
+ if ( obj ) //restore the object which was removed from the object list in InsertObjectCommand::unexecute()
+ {
+ canvas->doc()->embeddedObjects().append( obj );
+ canvas->doc()->repaint( obj );
+ }
+ else
+ {
+ bool success = false;
+ switch ( type )
+ {
+ case OBJECT_CHART:
+ {
+ success = canvas->activeSheet()->insertChart( geometry, entry, data );
+ break;
+ }
+ case OBJECT_KOFFICE_PART:
+ {
+ success = canvas->activeSheet()->insertChild( geometry, entry );
+ break;
+ }
+ case OBJECT_PICTURE:
+ {
+ success = canvas->activeSheet()->insertPicture( geometry.topLeft() , file );
+ break;
+ }
+ default:
+ break;
+ }
+ if ( success )
+ {
+ obj = canvas->doc()->embeddedObjects().last();
+ obj->sheet()->unifyObjectName( obj );
+ }
+ else
+ obj = 0;
+ }
+ executed = true;
+}
+
+void InsertObjectCommand::unexecute()
+{
+ if ( !obj )
+ return;
+
+ canvas->doc()->embeddedObjects().removeRef( obj );
+ obj->setSelected( false );
+ canvas->doc()->repaint( obj );
+
+ executed = false;
+}
+
+TQString InsertObjectCommand::name() const
+{
+ return i18n("Insert Object");
+}
+
+RenameNameObjectCommand::RenameNameObjectCommand( const TQString &_name, const TQString &_objectName,
+ EmbeddedObject *_obj, Doc *_doc ):
+ KNamedCommand( _name ),
+ newObjectName( _objectName ),
+ object( _obj ),
+ doc( _doc )
+{
+ oldObjectName = object->getObjectName();
+
+ m_page = object->sheet()/*doc->findPage( object )*/;
+}
+
+RenameNameObjectCommand::~RenameNameObjectCommand()
+{
+}
+
+void RenameNameObjectCommand::execute()
+{
+ object->setObjectName( newObjectName );
+ m_page->unifyObjectName( object );
+
+// doc->updateSideBarItem( m_page );
+}
+
+void RenameNameObjectCommand::unexecute()
+{
+ object->setObjectName( oldObjectName );
+
+// doc->updateSideBarItem( m_page );
+}
+
+GeometryPropertiesCommand::GeometryPropertiesCommand( const TQString &name, TQPtrList<EmbeddedObject> &objects,
+ bool newValue, KgpType type, Doc *_doc )
+: KNamedCommand( name )
+, m_objects( objects )
+, m_newValue( newValue )
+, m_type( type )
+ , m_doc( _doc )
+{
+ TQPtrListIterator<EmbeddedObject> it( m_objects );
+ for ( ; it.current() ; ++it )
+ {
+ it.current()->incCmdRef();
+ if ( m_type == ProtectSize )
+ m_oldValue.append( it.current()->isProtect() );
+ else if ( m_type == KeepRatio)
+ m_oldValue.append( it.current()->isKeepRatio() );
+ }
+}
+
+GeometryPropertiesCommand::GeometryPropertiesCommand( const TQString &name, TQValueList<bool> &lst,
+ TQPtrList<EmbeddedObject> &objects, bool newValue,
+ KgpType type, Doc *_doc)
+: KNamedCommand( name )
+, m_oldValue( lst )
+, m_objects( objects )
+, m_newValue( newValue )
+, m_type( type )
+, m_doc ( _doc )
+{
+ TQPtrListIterator<EmbeddedObject> it( m_objects );
+ for ( ; it.current() ; ++it )
+ it.current()->incCmdRef();
+}
+
+GeometryPropertiesCommand::~GeometryPropertiesCommand()
+{
+ TQPtrListIterator<EmbeddedObject> it( m_objects );
+ for ( ; it.current() ; ++it )
+ it.current()->decCmdRef();
+}
+
+void GeometryPropertiesCommand::execute()
+{
+ TQPtrListIterator<EmbeddedObject> it( m_objects );
+ for ( ; it.current() ; ++it )
+ {
+ if ( m_type == ProtectSize )
+ {
+ it.current()->setProtect( m_newValue );
+ if ( it.current()->isSelected() )
+ m_doc->repaint( it.current() );
+ }
+ else if ( m_type == KeepRatio)
+ it.current()->setKeepRatio( m_newValue );
+ }
+}
+
+void GeometryPropertiesCommand::unexecute()
+{
+ EmbeddedObject *obj = 0;
+ for ( unsigned int i = 0; i < m_objects.count(); ++i ) {
+ obj = m_objects.at( i );
+ if ( m_type == ProtectSize )
+ {
+ obj->setProtect( *m_oldValue.at(i) );
+ if ( obj->isSelected() )
+ m_doc->repaint( obj );
+ }
+ else if ( m_type == KeepRatio)
+ obj->setKeepRatio( *m_oldValue.at(i) );
+ }
+}
+
+MoveObjectByCmd::MoveObjectByCmd( const TQString &_name, const KoPoint &_diff, TQPtrList<EmbeddedObject> &_objects,
+ Doc *_doc,Sheet *_page )
+ : KNamedCommand( _name ), diff( _diff ), objects( _objects )
+{
+ objects.setAutoDelete( false );
+ doc = _doc;
+ m_page=_page;
+ TQPtrListIterator<EmbeddedObject> it( objects );
+ for ( ; it.current() ; ++it )
+ {
+ it.current()->incCmdRef();
+ }
+}
+
+MoveObjectByCmd::~MoveObjectByCmd()
+{
+ TQPtrListIterator<EmbeddedObject> it( objects );
+ for ( ; it.current() ; ++it )
+ it.current()->decCmdRef();
+}
+
+void MoveObjectByCmd::execute()
+{
+ TQRect oldRect;
+
+ for ( unsigned int i = 0; i < objects.count(); i++ ) {
+ doc->repaint( objects.at( i )->geometry() );
+
+ KoRect r = objects.at( i )->geometry();
+ r.moveBy( diff.x(), diff.y() );
+ objects.at( i )->setGeometry( r );
+
+ doc->repaint( objects.at( i ) );
+ }
+}
+
+void MoveObjectByCmd::unexecute()
+{
+ TQRect oldRect;
+
+ for ( unsigned int i = 0; i < objects.count(); i++ ) {
+ doc->repaint( objects.at( i )->geometry() );
+
+ KoRect r = objects.at( i )->geometry();
+ r.moveBy( -diff.x(), -diff.y() );
+ objects.at( i )->setGeometry( r );
+
+ doc->repaint( objects.at( i ) );
+ }
+}