/* Move pin to the current mouse position. This function is called by the * cursor management code. */ static void DrawMovePin( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase ) { LIB_EDIT_FRAME* parent = (LIB_EDIT_FRAME*) aPanel->GetParent(); if( parent == NULL ) return; LIB_PIN* cur_pin = (LIB_PIN*) parent->GetDrawItem(); if( cur_pin == NULL || cur_pin->Type() != LIB_PIN_T ) return; wxPoint pinpos = cur_pin->GetPosition(); int show_opts = PIN_DRAW_TEXTS | PIN_DRAW_DANGLING | PIN_DANGLING_HIDDEN; if( parent->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 ); // Erase pin in old position if( aErase ) { cur_pin->Move( PinPreviousPos ); cur_pin->Draw( aPanel, aDC, wxPoint( 0, 0 ), UNSPECIFIED_COLOR, g_XorMode, showOptions, DefaultTransform ); } // Redraw pin in new position cur_pin->Move( aPanel->GetParent()->GetCrossHairPosition( true ) ); cur_pin->Draw( aPanel, aDC, wxPoint( 0, 0 ), UNSPECIFIED_COLOR, g_XorMode, showOptions, DefaultTransform ); PinPreviousPos = cur_pin->GetPosition(); /* Keep the original position for existing pin (for Undo command) * and the current position for a new pin */ if( !cur_pin->IsNew() ) cur_pin->Move( pinpos ); }
static void AbortSymbolTraceOn( EDA_DRAW_PANEL* Panel, wxDC* DC ) { LIB_EDIT_FRAME* parent = (LIB_EDIT_FRAME*) Panel->GetParent(); LIB_ITEM* item = parent->GetDrawItem(); if( item == NULL ) return; bool newItem = item->IsNew(); item->EndEdit( parent->GetCrossHairPosition( true ), true ); if( newItem ) { delete item; } else parent->RestoreComponent(); parent->SetDrawItem( NULL ); Panel->Refresh(); }
/** * Clean up after aborting a move pin command. */ static void AbortPinMove( EDA_DRAW_PANEL* Panel, wxDC* DC ) { LIB_EDIT_FRAME* parent = (LIB_EDIT_FRAME*) Panel->GetParent(); if( parent == NULL ) return; LIB_PIN* pin = (LIB_PIN*) parent->GetDrawItem(); if( pin == NULL || pin->Type() != LIB_PIN_T ) return; pin->ClearFlags(); if( pin->IsNew() ) delete pin; else parent->RestoreComponent(); // clear edit flags parent->SetDrawItem( NULL ); parent->SetLastDrawItem( NULL ); Panel->Refresh( true ); }