Loading eeschema/busentry.cpp +1 −2 Original line number Original line Diff line number Diff line Loading @@ -92,8 +92,7 @@ void WinEDA_SchematicFrame::StartMoveBusEntry( SCH_BUS_ENTRY* BusEntry, if( BusEntry == NULL ) if( BusEntry == NULL ) return; return; if( (BusEntry->m_Flags & IS_NEW) == 0 ) // => not already in edit, save if( (BusEntry->m_Flags & IS_NEW) == 0 ) // not already in edit, save shape // shape */ { { delete g_ItemToUndoCopy; delete g_ItemToUndoCopy; g_ItemToUndoCopy = BusEntry->GenCopy(); g_ItemToUndoCopy = BusEntry->GenCopy(); Loading eeschema/class_drawsheet.cpp +16 −0 Original line number Original line Diff line number Diff line Loading @@ -208,6 +208,22 @@ void SCH_SHEET::Place( WinEDA_SchematicFrame* frame, wxDC* DC ) return; return; } } } } else /* save old text in undo list */ { if( g_ItemToUndoCopy && ( g_ItemToUndoCopy->Type() == Type() ) ) { /* restore old values and save new ones */ SwapData( (SCH_SHEET*) g_ItemToUndoCopy ); /* save in undo list */ frame->SaveCopyInUndoList( this, UR_CHANGED ); /* restore new values */ SwapData( (SCH_SHEET*) g_ItemToUndoCopy ); SAFE_DELETE( g_ItemToUndoCopy ); } } SCH_ITEM::Place( frame, DC ); //puts it on the EEDrawList. SCH_ITEM::Place( frame, DC ); //puts it on the EEDrawList. if( isnew ) if( isnew ) Loading eeschema/hotkeys.cpp +7 −5 Original line number Original line Diff line number Diff line Loading @@ -551,7 +551,7 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); // Create the events for moving a component or other schematic item // Create the events for moving a component or other schematic item wxCommandEvent eventMoveComponent( wxEVT_COMMAND_TOOL_CLICKED, wxCommandEvent eventMoveOrDragComponent( wxEVT_COMMAND_TOOL_CLICKED, HK_Descr->m_IdMenuEvent ); HK_Descr->m_IdMenuEvent ); wxCommandEvent eventMoveItem( wxEVT_COMMAND_TOOL_CLICKED, wxCommandEvent eventMoveItem( wxEVT_COMMAND_TOOL_CLICKED, ID_POPUP_SCH_MOVE_ITEM_REQUEST ); ID_POPUP_SCH_MOVE_ITEM_REQUEST ); Loading @@ -564,21 +564,23 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, { { // select the correct event for moving an schematic object // select the correct event for moving an schematic object // and add it to the event queue // and add it to the event queue case DRAW_SHEET_STRUCT_TYPE: case TYPE_SCH_COMPONENT: case TYPE_SCH_COMPONENT: wxPostEvent( this, eventMoveComponent ); wxPostEvent( this, eventMoveOrDragComponent ); break; break; case TYPE_SCH_TEXT: case TYPE_SCH_TEXT: case TYPE_SCH_LABEL: case TYPE_SCH_LABEL: case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_HIERLABEL: case TYPE_SCH_HIERLABEL: case DRAW_SHEET_STRUCT_TYPE: case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: if( HK_Descr->m_Idcommand != HK_DRAG ) wxPostEvent( this, eventMoveItem ); wxPostEvent( this, eventMoveItem ); break; break; case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE: case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE: if( HK_Descr->m_Idcommand != HK_DRAG ) wxPostEvent( this, eventMovePinsheet ); wxPostEvent( this, eventMovePinsheet ); break; break; Loading eeschema/onrightclick.cpp +7 −2 Original line number Original line Diff line number Diff line Loading @@ -439,11 +439,11 @@ void AddMenusForHLabel( wxMenu* PopMenu, SCH_HIERLABEL* HLabel ) msg = AddHotkeyName( _( "Rotate Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Rotate Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_ROTATE ); HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_TEXT, ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_TEXT, _( "Rotate Hierarchical Label" ), rotate_glabel_xpm ); msg, rotate_glabel_xpm ); msg = AddHotkeyName( _( "Edit Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Edit Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_EDIT ); HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_TEXT, ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_TEXT, _( "Edit Hierarchical Label" ), edit_text_xpm ); msg, edit_text_xpm ); msg = AddHotkeyName( _( "Delete Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Delete Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_DELETE ); HK_DELETE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DELETE, ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DELETE, Loading Loading @@ -678,6 +678,11 @@ void AddMenusForHierchicalSheet( wxMenu* PopMenu, SCH_SHEET* Sheet ) s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_sheet_xpm ); msg, move_sheet_xpm ); msg = AddHotkeyName( _( "Drag Sheet" ), s_Schematic_Hokeys_Descr, HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_sheet_xpm ); } } if( Sheet->m_Flags ) if( Sheet->m_Flags ) Loading eeschema/operations_on_items_lists.cpp +32 −19 Original line number Original line Diff line number Diff line Loading @@ -181,79 +181,92 @@ void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList, } } /* Routine to create a new copy of given struct. /** function DuplicateStruct * Routine to create a new copy of given struct. * The new object is not put in draw list (not linked) * The new object is not put in draw list (not linked) * @param aDrawStruct = the SCH_ITEM to duplicate * @param aClone (default = false) * if true duplicate also some parameters that must be unique * (timestamp and sheet name) * aClone must be false. use true only is undo/redo duplications */ */ SCH_ITEM* DuplicateStruct( SCH_ITEM* DrawStruct ) SCH_ITEM* DuplicateStruct( SCH_ITEM* aDrawStruct, bool aClone ) { { SCH_ITEM* NewDrawStruct = NULL; SCH_ITEM* NewDrawStruct = NULL; if( DrawStruct == NULL ) if( aDrawStruct == NULL ) { { wxMessageBox( wxT( "DuplicateStruct error: NULL struct" ) ); wxMessageBox( wxT( "DuplicateStruct error: NULL struct" ) ); return NULL; return NULL; } } switch( DrawStruct->Type() ) switch( aDrawStruct->Type() ) { { case DRAW_POLYLINE_STRUCT_TYPE: case DRAW_POLYLINE_STRUCT_TYPE: NewDrawStruct = ( (SCH_POLYLINE*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_POLYLINE*) aDrawStruct )->GenCopy(); break; break; case DRAW_SEGMENT_STRUCT_TYPE: case DRAW_SEGMENT_STRUCT_TYPE: NewDrawStruct = ( (SCH_LINE*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_LINE*) aDrawStruct )->GenCopy(); break; break; case DRAW_BUSENTRY_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: NewDrawStruct = ( (SCH_BUS_ENTRY*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_BUS_ENTRY*) aDrawStruct )->GenCopy(); break; break; case DRAW_JUNCTION_STRUCT_TYPE: case DRAW_JUNCTION_STRUCT_TYPE: NewDrawStruct = ( (SCH_JUNCTION*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_JUNCTION*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_MARKER: case TYPE_SCH_MARKER: NewDrawStruct = ( (SCH_MARKER*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_MARKER*) aDrawStruct )->GenCopy(); break; break; case DRAW_NOCONNECT_STRUCT_TYPE: case DRAW_NOCONNECT_STRUCT_TYPE: NewDrawStruct = ( (SCH_NO_CONNECT*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_NO_CONNECT*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_TEXT: case TYPE_SCH_TEXT: NewDrawStruct = ( (SCH_TEXT*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_TEXT*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_LABEL: case TYPE_SCH_LABEL: NewDrawStruct = ( (SCH_LABEL*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_LABEL*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_HIERLABEL: case TYPE_SCH_HIERLABEL: NewDrawStruct = ( (SCH_HIERLABEL*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_HIERLABEL*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_GLOBALLABEL: NewDrawStruct = ( (SCH_GLOBALLABEL*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_GLOBALLABEL*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_COMPONENT: case TYPE_SCH_COMPONENT: NewDrawStruct = ( (SCH_COMPONENT*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_COMPONENT*) aDrawStruct )->GenCopy(); break; break; case DRAW_SHEET_STRUCT_TYPE: case DRAW_SHEET_STRUCT_TYPE: NewDrawStruct = ( (SCH_SHEET*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_SHEET*) aDrawStruct )->GenCopy(); if ( aClone ) { ((SCH_SHEET*)NewDrawStruct)->m_SheetName = ((SCH_SHEET*)aDrawStruct)->m_SheetName; } break; break; default: default: { { wxString msg; wxString msg; msg << wxT( "DuplicateStruct error: unexpected StructType " ) msg << wxT( "DuplicateStruct error: unexpected StructType " ) << DrawStruct->Type() << wxT( " " ) << DrawStruct->GetClass(); << aDrawStruct->Type() << wxT( " " ) << aDrawStruct->GetClass(); wxMessageBox( msg ); wxMessageBox( msg ); } } break; break; } } NewDrawStruct->m_Image = DrawStruct; if ( aClone ) NewDrawStruct->m_TimeStamp = aDrawStruct->m_TimeStamp; NewDrawStruct->m_Image = aDrawStruct; return NewDrawStruct; return NewDrawStruct; } } Loading
eeschema/busentry.cpp +1 −2 Original line number Original line Diff line number Diff line Loading @@ -92,8 +92,7 @@ void WinEDA_SchematicFrame::StartMoveBusEntry( SCH_BUS_ENTRY* BusEntry, if( BusEntry == NULL ) if( BusEntry == NULL ) return; return; if( (BusEntry->m_Flags & IS_NEW) == 0 ) // => not already in edit, save if( (BusEntry->m_Flags & IS_NEW) == 0 ) // not already in edit, save shape // shape */ { { delete g_ItemToUndoCopy; delete g_ItemToUndoCopy; g_ItemToUndoCopy = BusEntry->GenCopy(); g_ItemToUndoCopy = BusEntry->GenCopy(); Loading
eeschema/class_drawsheet.cpp +16 −0 Original line number Original line Diff line number Diff line Loading @@ -208,6 +208,22 @@ void SCH_SHEET::Place( WinEDA_SchematicFrame* frame, wxDC* DC ) return; return; } } } } else /* save old text in undo list */ { if( g_ItemToUndoCopy && ( g_ItemToUndoCopy->Type() == Type() ) ) { /* restore old values and save new ones */ SwapData( (SCH_SHEET*) g_ItemToUndoCopy ); /* save in undo list */ frame->SaveCopyInUndoList( this, UR_CHANGED ); /* restore new values */ SwapData( (SCH_SHEET*) g_ItemToUndoCopy ); SAFE_DELETE( g_ItemToUndoCopy ); } } SCH_ITEM::Place( frame, DC ); //puts it on the EEDrawList. SCH_ITEM::Place( frame, DC ); //puts it on the EEDrawList. if( isnew ) if( isnew ) Loading
eeschema/hotkeys.cpp +7 −5 Original line number Original line Diff line number Diff line Loading @@ -551,7 +551,7 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); // Create the events for moving a component or other schematic item // Create the events for moving a component or other schematic item wxCommandEvent eventMoveComponent( wxEVT_COMMAND_TOOL_CLICKED, wxCommandEvent eventMoveOrDragComponent( wxEVT_COMMAND_TOOL_CLICKED, HK_Descr->m_IdMenuEvent ); HK_Descr->m_IdMenuEvent ); wxCommandEvent eventMoveItem( wxEVT_COMMAND_TOOL_CLICKED, wxCommandEvent eventMoveItem( wxEVT_COMMAND_TOOL_CLICKED, ID_POPUP_SCH_MOVE_ITEM_REQUEST ); ID_POPUP_SCH_MOVE_ITEM_REQUEST ); Loading @@ -564,21 +564,23 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, { { // select the correct event for moving an schematic object // select the correct event for moving an schematic object // and add it to the event queue // and add it to the event queue case DRAW_SHEET_STRUCT_TYPE: case TYPE_SCH_COMPONENT: case TYPE_SCH_COMPONENT: wxPostEvent( this, eventMoveComponent ); wxPostEvent( this, eventMoveOrDragComponent ); break; break; case TYPE_SCH_TEXT: case TYPE_SCH_TEXT: case TYPE_SCH_LABEL: case TYPE_SCH_LABEL: case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_HIERLABEL: case TYPE_SCH_HIERLABEL: case DRAW_SHEET_STRUCT_TYPE: case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: if( HK_Descr->m_Idcommand != HK_DRAG ) wxPostEvent( this, eventMoveItem ); wxPostEvent( this, eventMoveItem ); break; break; case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE: case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE: if( HK_Descr->m_Idcommand != HK_DRAG ) wxPostEvent( this, eventMovePinsheet ); wxPostEvent( this, eventMovePinsheet ); break; break; Loading
eeschema/onrightclick.cpp +7 −2 Original line number Original line Diff line number Diff line Loading @@ -439,11 +439,11 @@ void AddMenusForHLabel( wxMenu* PopMenu, SCH_HIERLABEL* HLabel ) msg = AddHotkeyName( _( "Rotate Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Rotate Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_ROTATE ); HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_TEXT, ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_TEXT, _( "Rotate Hierarchical Label" ), rotate_glabel_xpm ); msg, rotate_glabel_xpm ); msg = AddHotkeyName( _( "Edit Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Edit Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_EDIT ); HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_TEXT, ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_TEXT, _( "Edit Hierarchical Label" ), edit_text_xpm ); msg, edit_text_xpm ); msg = AddHotkeyName( _( "Delete Hierarchical Label" ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Delete Hierarchical Label" ), s_Schematic_Hokeys_Descr, HK_DELETE ); HK_DELETE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DELETE, ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DELETE, Loading Loading @@ -678,6 +678,11 @@ void AddMenusForHierchicalSheet( wxMenu* PopMenu, SCH_SHEET* Sheet ) s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); s_Schematic_Hokeys_Descr, HK_MOVE_COMPONENT_OR_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_ITEM_REQUEST, msg, move_sheet_xpm ); msg, move_sheet_xpm ); msg = AddHotkeyName( _( "Drag Sheet" ), s_Schematic_Hokeys_Descr, HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_sheet_xpm ); } } if( Sheet->m_Flags ) if( Sheet->m_Flags ) Loading
eeschema/operations_on_items_lists.cpp +32 −19 Original line number Original line Diff line number Diff line Loading @@ -181,79 +181,92 @@ void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList, } } /* Routine to create a new copy of given struct. /** function DuplicateStruct * Routine to create a new copy of given struct. * The new object is not put in draw list (not linked) * The new object is not put in draw list (not linked) * @param aDrawStruct = the SCH_ITEM to duplicate * @param aClone (default = false) * if true duplicate also some parameters that must be unique * (timestamp and sheet name) * aClone must be false. use true only is undo/redo duplications */ */ SCH_ITEM* DuplicateStruct( SCH_ITEM* DrawStruct ) SCH_ITEM* DuplicateStruct( SCH_ITEM* aDrawStruct, bool aClone ) { { SCH_ITEM* NewDrawStruct = NULL; SCH_ITEM* NewDrawStruct = NULL; if( DrawStruct == NULL ) if( aDrawStruct == NULL ) { { wxMessageBox( wxT( "DuplicateStruct error: NULL struct" ) ); wxMessageBox( wxT( "DuplicateStruct error: NULL struct" ) ); return NULL; return NULL; } } switch( DrawStruct->Type() ) switch( aDrawStruct->Type() ) { { case DRAW_POLYLINE_STRUCT_TYPE: case DRAW_POLYLINE_STRUCT_TYPE: NewDrawStruct = ( (SCH_POLYLINE*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_POLYLINE*) aDrawStruct )->GenCopy(); break; break; case DRAW_SEGMENT_STRUCT_TYPE: case DRAW_SEGMENT_STRUCT_TYPE: NewDrawStruct = ( (SCH_LINE*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_LINE*) aDrawStruct )->GenCopy(); break; break; case DRAW_BUSENTRY_STRUCT_TYPE: case DRAW_BUSENTRY_STRUCT_TYPE: NewDrawStruct = ( (SCH_BUS_ENTRY*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_BUS_ENTRY*) aDrawStruct )->GenCopy(); break; break; case DRAW_JUNCTION_STRUCT_TYPE: case DRAW_JUNCTION_STRUCT_TYPE: NewDrawStruct = ( (SCH_JUNCTION*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_JUNCTION*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_MARKER: case TYPE_SCH_MARKER: NewDrawStruct = ( (SCH_MARKER*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_MARKER*) aDrawStruct )->GenCopy(); break; break; case DRAW_NOCONNECT_STRUCT_TYPE: case DRAW_NOCONNECT_STRUCT_TYPE: NewDrawStruct = ( (SCH_NO_CONNECT*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_NO_CONNECT*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_TEXT: case TYPE_SCH_TEXT: NewDrawStruct = ( (SCH_TEXT*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_TEXT*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_LABEL: case TYPE_SCH_LABEL: NewDrawStruct = ( (SCH_LABEL*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_LABEL*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_HIERLABEL: case TYPE_SCH_HIERLABEL: NewDrawStruct = ( (SCH_HIERLABEL*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_HIERLABEL*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_GLOBALLABEL: case TYPE_SCH_GLOBALLABEL: NewDrawStruct = ( (SCH_GLOBALLABEL*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_GLOBALLABEL*) aDrawStruct )->GenCopy(); break; break; case TYPE_SCH_COMPONENT: case TYPE_SCH_COMPONENT: NewDrawStruct = ( (SCH_COMPONENT*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_COMPONENT*) aDrawStruct )->GenCopy(); break; break; case DRAW_SHEET_STRUCT_TYPE: case DRAW_SHEET_STRUCT_TYPE: NewDrawStruct = ( (SCH_SHEET*) DrawStruct )->GenCopy(); NewDrawStruct = ( (SCH_SHEET*) aDrawStruct )->GenCopy(); if ( aClone ) { ((SCH_SHEET*)NewDrawStruct)->m_SheetName = ((SCH_SHEET*)aDrawStruct)->m_SheetName; } break; break; default: default: { { wxString msg; wxString msg; msg << wxT( "DuplicateStruct error: unexpected StructType " ) msg << wxT( "DuplicateStruct error: unexpected StructType " ) << DrawStruct->Type() << wxT( " " ) << DrawStruct->GetClass(); << aDrawStruct->Type() << wxT( " " ) << aDrawStruct->GetClass(); wxMessageBox( msg ); wxMessageBox( msg ); } } break; break; } } NewDrawStruct->m_Image = DrawStruct; if ( aClone ) NewDrawStruct->m_TimeStamp = aDrawStruct->m_TimeStamp; NewDrawStruct->m_Image = aDrawStruct; return NewDrawStruct; return NewDrawStruct; } }