void LIB_EDIT_FRAME::SaveCopyInUndoList( EDA_ITEM* ItemToCopy, int unused_flag ) { LIB_PART* CopyItem; PICKED_ITEMS_LIST* lastcmd; CopyItem = new LIB_PART( * (LIB_PART*) ItemToCopy ); // Clear current flags (which can be temporary set by a current edit command). CopyItem->ClearStatus(); lastcmd = new PICKED_ITEMS_LIST(); ITEM_PICKER wrapper( CopyItem, UR_LIBEDIT ); lastcmd->PushItem(wrapper); GetScreen()->PushCommandToUndoList( lastcmd ); // Clear redo list, because after new save there is no redo to do. GetScreen()->ClearUndoORRedoList( GetScreen()->m_RedoList ); }
/* * Create a new pin. */ void LIB_EDIT_FRAME::CreatePin( wxDC* DC ) { LIB_PART* part = GetCurPart(); if( !part ) return; part->ClearStatus(); LIB_PIN* pin = new LIB_PIN( part ); m_drawItem = pin; pin->SetFlags( IS_NEW ); pin->SetUnit( m_unit ); pin->SetConvert( m_convert ); // Flag pins to consider if( SynchronizePins() ) pin->SetFlags( IS_LINKED ); pin->Move( GetCrossHairPosition( true ) ); pin->SetLength( GetLastPinLength() ); pin->SetOrientation( LastPinOrient ); pin->SetType( LastPinType ); pin->SetShape( LastPinShape ); pin->SetNameTextSize( GetLastPinNameSize() ); pin->SetNumberTextSize( GetLastPinNumSize() ); pin->SetConvert( LastPinCommonConvert ? 0 : m_convert ); pin->SetUnit( LastPinCommonUnit ? 0 : m_unit ); pin->SetVisible( LastPinVisible ); PinPreviousPos = pin->GetPosition(); m_canvas->SetIgnoreMouseEvents( true ); wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED ); cmd.SetId( ID_LIBEDIT_EDIT_PIN ); GetEventHandler()->ProcessEvent( cmd ); m_canvas->MoveCursorToCrossHair(); m_canvas->SetIgnoreMouseEvents( false ); if( pin->GetFlags() & IS_CANCELLED ) { deleteItem( DC ); } else { ClearTempCopyComponent(); m_canvas->SetMouseCapture( DrawMovePin, AbortPinMove ); if( DC ) { int show_opts = PIN_DRAW_TEXTS | PIN_DRAW_DANGLING | PIN_DANGLING_HIDDEN; if( GetShowElectricalType() ) show_opts |= PIN_DRAW_ELECTRICAL_TYPE_NAME; // In LIB_PIN::Draw() a void* parameter used as flag to pass show_opts. // Build it: void* showOptions = reinterpret_cast<void*>( show_opts ); pin->Draw( m_canvas, DC, wxPoint( 0, 0 ), UNSPECIFIED_COLOR, GR_COPY, showOptions, DefaultTransform ); } } }