Commit 7bdcad15 authored by Marco Mattila's avatar Marco Mattila
Browse files

Add flip to pcbnew text fields.

parent b3fd915f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -928,6 +928,7 @@ public:

    // Handling texts on the board
    void Rotate_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC );
    void FlipTextePcb( TEXTE_PCB* aTextePcb, wxDC* aDC );
    TEXTE_PCB* Create_Texte_Pcb( wxDC* DC );
    void Delete_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC );
    void StartMoveTextePcb( TEXTE_PCB* TextePcb, wxDC* DC );
+4 −1
Original line number Diff line number Diff line
@@ -161,7 +161,10 @@ void TEXTE_PCB::Flip(const wxPoint& aCentre )
{
    m_Pos.y  = aCentre.y - ( m_Pos.y - aCentre.y );
//    NEGATE( m_Orient );   not needed: m_Mirror handles this
    if( ( GetLayer() == LAYER_N_BACK ) || ( GetLayer() == LAYER_N_FRONT ) )
    if( GetLayer() == LAYER_N_BACK
        || GetLayer() == LAYER_N_FRONT
        || GetLayer() == SILKSCREEN_N_BACK
        || GetLayer() == SILKSCREEN_N_FRONT )
    {
        m_Mirror = not m_Mirror;      /* inverse mirror */
    }
+6 −0
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
    case ID_TOOLBARH_PCB_SELECT_LAYER:
    case ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR:
    case ID_POPUP_PCB_ROTATE_TEXTEPCB:
    case ID_POPUP_PCB_FLIP_TEXTEPCB:
    case ID_POPUP_PCB_EDIT_TEXTEPCB:
    case ID_POPUP_PCB_EDIT_MIRE:
    case ID_POPUP_PCB_ROTATE_TEXTMODULE:
@@ -930,6 +931,11 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
        m_canvas->MoveCursorToCrossHair();
        break;

    case ID_POPUP_PCB_FLIP_TEXTEPCB:
        FlipTextePcb( (TEXTE_PCB*) GetCurItem(), &dc );
        m_canvas->MoveCursorToCrossHair();
        break;

    case ID_POPUP_PCB_DELETE_TEXTEPCB:
        Delete_Texte_Pcb( (TEXTE_PCB*) GetCurItem(), &dc );
        m_canvas->MoveCursorToCrossHair();
+23 −3
Original line number Diff line number Diff line
@@ -216,7 +216,6 @@ TEXTE_PCB* PCB_EDIT_FRAME::Create_Texte_Pcb( wxDC* DC )
void PCB_EDIT_FRAME::Rotate_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC )
{
    int angle    = 900;
    int drawmode = GR_XOR;

    if( TextePcb == NULL )
        return;
@@ -228,13 +227,34 @@ void PCB_EDIT_FRAME::Rotate_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC )
    NORMALIZE_ANGLE_POS( TextePcb->m_Orient );

    /* Redraw text in new position. */
    TextePcb->Draw( m_canvas, DC, drawmode );
    TextePcb->Draw( m_canvas, DC, GR_XOR );
    TextePcb->DisplayInfo( this );

    if( TextePcb->GetFlags() == 0 )    // i.e. not edited, or moved
        SaveCopyInUndoList( TextePcb, UR_ROTATED, TextePcb->m_Pos );
        SaveCopyInUndoList( TextePcb, UR_ROTATED, TextePcb->GetPosition() );
    else                 // set flag edit, to show it was a complex command
        TextePcb->SetFlags( IN_EDIT );

    OnModify();
}


void PCB_EDIT_FRAME::FlipTextePcb( TEXTE_PCB* aTextePcb, wxDC* aDC )
{
    if( aTextePcb == NULL )
        return;

    aTextePcb->Draw( m_canvas, aDC, GR_XOR );

    aTextePcb->Flip( aTextePcb->GetPosition() );

    aTextePcb->Draw( m_canvas, aDC, GR_XOR );
    aTextePcb->DisplayInfo( this );

    if( aTextePcb->GetFlags() == 0 )    // i.e. not edited, or moved
        SaveCopyInUndoList( aTextePcb, UR_FLIPPED, aTextePcb->GetPosition() );
    else                 // set flag edit, to show it was a complex command
        aTextePcb->SetFlags( IN_EDIT );

    OnModify();
}
+4 −4
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ static EDA_HOTKEY HkPlaceItem( wxT( "Place Item" ), HK_PLACE_ITEM, 'P' );
static EDA_HOTKEY HkAddMicroVia( wxT( "Add MicroVia" ), HK_ADD_MICROVIA, 'V' + GR_KB_CTRL );
static EDA_HOTKEY HkEndTrack( wxT( "End Track" ), HK_END_TRACK, WXK_END );
static EDA_HOTKEY HkEditBoardItem( wxT( "Edit Item" ), HK_EDIT_ITEM, 'E' );
static EDA_HOTKEY HkFlipFootprint( wxT( "Flip Footprint" ), HK_FLIP_FOOTPRINT, 'F' );
static EDA_HOTKEY HkFlipItem( wxT( "Flip Item" ), HK_FLIP_ITEM, 'F' );
static EDA_HOTKEY HkRotateItem( wxT( "Rotate Item" ), HK_ROTATE_ITEM, 'R' );
static EDA_HOTKEY HkMoveItem( wxT( "Move Item" ), HK_MOVE_ITEM, 'M' );
static EDA_HOTKEY HkDragFootprint( wxT( "Drag Footprint" ), HK_DRAG_ITEM, 'G' );
@@ -210,8 +210,8 @@ EDA_HOTKEY* board_edit_Hotkey_List[] =
    &HkSwitchTrackPosture,
    &HkDragTrackKeepSlope,
    &HkPlaceItem,
    &HkEndTrack,               &HkMoveItem,
    &HkFlipFootprint,          &HkRotateItem,                &HkDragFootprint,
    &HkEndTrack,               &HkMoveItem,                  &HkFlipItem,
    &HkRotateItem,             &HkDragFootprint,
    &HkGetAndMoveFootprint,    &HkLock_Unlock_Footprint,     &HkSavefile,
    &HkLoadfile,               &HkFindItem,                  &HkEditBoardItem,
    &HkSwitch2CopperLayer,     &HkSwitch2InnerLayer1,
Loading