/* * Abort current text edit progress. * If a text is selected, its initial coord are regenerated */ void Abort_Edit_Pcb_Text( EDA_DRAW_PANEL* Panel, wxDC* DC ) { TEXTE_PCB* TextePcb = (TEXTE_PCB*) Panel->GetScreen()->GetCurItem(); ( (PCB_EDIT_FRAME*) Panel->GetParent() )->SetCurItem( NULL ); Panel->SetMouseCapture( NULL, NULL ); if( TextePcb == NULL ) // Should not occur return; #ifndef USE_WX_OVERLAY TextePcb->Draw( Panel, DC, GR_XOR ); #endif if( TextePcb->IsNew() ) // If new: remove it { TextePcb->DeleteStructure(); return; } TextePcb->SwapData( &s_TextCopy ); TextePcb->ClearFlags(); #ifndef USE_WX_OVERLAY TextePcb->Draw( Panel, DC, GR_OR ); #else Panel->Refresh(); #endif }
TEXTE_PCB* PCB_EDIT_FRAME::CreateTextePcb( wxDC* aDC, TEXTE_PCB* aText ) { TEXTE_PCB* textePcb = new TEXTE_PCB( GetBoard() ); if( aText ) { textePcb->Copy( aText ); GetBoard()->Add( textePcb ); textePcb->SetFlags( IS_NEW ); if( aDC ) StartMoveTextePcb( textePcb, aDC, false ); // Don't erase aText when copying } else { GetBoard()->Add( textePcb ); textePcb->SetFlags( IS_NEW ); LAYER_NUM layer = ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer; textePcb->SetLayer( layer ); // Set the mirrored option for layers on the BACK side of the board if( layer == LAYER_N_BACK || layer == SILKSCREEN_N_BACK || layer == SOLDERPASTE_N_BACK || layer == SOLDERMASK_N_BACK || layer == ADHESIVE_N_BACK ) textePcb->SetMirrored( true ); textePcb->SetSize( GetBoard()->GetDesignSettings().m_PcbTextSize ); textePcb->SetTextPosition( GetCrossHairPosition() ); textePcb->SetThickness( GetBoard()->GetDesignSettings().m_PcbTextWidth ); InstallTextPCBOptionsFrame( textePcb, aDC ); if( textePcb->GetText().IsEmpty() ) { textePcb->DeleteStructure(); textePcb = NULL; } else if( aDC ) { StartMoveTextePcb( textePcb, aDC ); } } return textePcb; }