karbon
vgroupcmd.cc00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <klocale.h>
00022
00023 #include "vgroup.h"
00024 #include "vgroupcmd.h"
00025 #include "vselection.h"
00026 #include "vdocument.h"
00027 #include "vlayer.h"
00028
00029 VGroupCmd::VGroupCmd( VDocument *doc )
00030 : VCommand( doc, i18n( "Group Objects" ), "14_group" )
00031 {
00032 m_selection = document()->selection()->clone();
00033
00034 m_group = 0L;
00035 }
00036
00037 VGroupCmd::~VGroupCmd()
00038 {
00039 delete( m_selection );
00040 }
00041
00042 void
00043 VGroupCmd::execute()
00044 {
00045 m_group = new VGroup( document()->activeLayer() );
00046
00047 VObjectListIterator itr( m_selection->objects() );
00048 for ( ; itr.current() ; ++itr )
00049 {
00050
00051 VGroup *parent = dynamic_cast<VGroup*>( itr.current()->parent() );
00052 if( parent )
00053 parent->take( *itr.current() );
00054
00055 m_group->append( itr.current() );
00056 }
00057
00058 document()->append( m_group );
00059 document()->selection()->clear();
00060 document()->selection()->append( m_group );
00061
00062 setSuccess( true );
00063 }
00064
00065 void
00066 VGroupCmd::unexecute()
00067 {
00068 if( ! m_group )
00069 return;
00070
00071 document()->selection()->clear();
00072
00073 VObjectListIterator itr( m_group->objects() );
00074 for ( ; itr.current() ; ++itr )
00075 {
00076
00077 document()->selection()->append( itr.current() );
00078 }
00079
00080 VGroup* parent;
00081 if( ( parent = dynamic_cast<VGroup*>( m_group->parent() ) ) )
00082 {
00083
00084 parent->take( *m_group );
00085
00086
00087 VObjectListIterator itr = m_selection->objects();
00088
00089 for ( ; itr.current() ; ++itr )
00090 {
00091 parent->append( itr.current() );
00092 }
00093
00094 m_group->clear();
00095 m_group->setState( VObject::deleted );
00096 }
00097
00098 setSuccess( false );
00099 }
00100
|