karbon
vdeletenodescmd.cc00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <klocale.h>
00023
00024 #include "vdeletenodescmd.h"
00025 #include "vselection.h"
00026 #include "vsegment.h"
00027 #include "vpath.h"
00028 #include "vdocument.h"
00029
00030 VDeleteNodeCmd::VDeleteNodeCmd( VDocument *doc )
00031 : VCommand( doc, i18n( "Delete Node" ) )
00032 {
00033 }
00034
00035 VDeleteNodeCmd::~VDeleteNodeCmd()
00036 {
00037 }
00038
00039 void
00040 VDeleteNodeCmd::visitVSubpath( VSubpath& path )
00041 {
00042 VSegment* segment = path.first();
00043
00044 path.next();
00045 while( segment )
00046 {
00047 if( segment->state() != VSegment::deleted && segment->knotIsSelected() )
00048 {
00049 segment->setState( VSegment::deleted );
00050 m_segments.append( segment );
00051 }
00052 segment = segment->next();
00053 }
00054 if( m_segments.count() > 0 )
00055 path.invalidateBoundingBox();
00056 }
00057
00058 void
00059 VDeleteNodeCmd::execute()
00060 {
00061 VObjectListIterator itr( document()->selection()->objects() );
00062
00063 for( ; itr.current() ; ++itr )
00064 visit( *itr.current() );
00065
00066 setSuccess( m_segments.count() > 0 );
00067 }
00068
00069 void
00070 VDeleteNodeCmd::unexecute()
00071 {
00072 QPtrListIterator<VSegment> itr( m_segments );
00073 for( ; itr.current() ; ++itr )
00074 itr.current()->setState( VSegment::normal );
00075 setSuccess( false );
00076 }
00077
|