karbon
vclipartcmd.cc
00001 /* This file is part of the KDE project 00002 Copyright (C) 2001, 2002, 2003 The Karbon Developers 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00017 * Boston, MA 02110-1301, USA. 00018 */ 00019 00020 00021 #include "vclipartcmd.h" 00022 #include "vdocument.h" 00023 #include "vselection.h" 00024 00025 VClipartCmd::VClipartCmd( VDocument* doc, const QString& name, VObject* clipart ) 00026 : VCommand( doc, name ), m_clipart( clipart->clone() ), m_executed( false ) 00027 { 00028 } 00029 00030 void 00031 VClipartCmd::execute() 00032 { 00033 if( !m_clipart ) 00034 return; 00035 00036 if( m_clipart->state() == VObject::deleted ) 00037 m_clipart->setState( VObject::normal ); 00038 else 00039 { 00040 m_clipart->setState( VObject::normal ); 00041 document()->append( m_clipart ); 00042 document()->selection()->clear(); 00043 document()->selection()->append( m_clipart ); 00044 } 00045 00046 m_executed = true; 00047 00048 setSuccess( true ); 00049 } 00050 00051 void 00052 VClipartCmd::unexecute() 00053 { 00054 if( !m_clipart ) 00055 return; 00056 00057 document()->selection()->take( *m_clipart ); 00058 00059 m_clipart->setState( VObject::deleted ); 00060 00061 m_executed = false; 00062 00063 setSuccess( false ); 00064 } 00065