void DIALOG_DIMENSION_EDITOR::OnOKClick( wxCommandEvent& event ) { if( m_DC ) // Delete old text. { CurrentDimension->Draw( m_Parent->GetCanvas(), m_DC, GR_XOR ); } m_Parent->SaveCopyInUndoList(CurrentDimension, UR_CHANGED); if( m_Name->GetValue() != wxEmptyString ) { CurrentDimension->SetText( m_Name->GetValue() ); } wxString msg; // Get new size value: msg = m_TxtSizeXCtrl->GetValue(); CurrentDimension->Text().SetWidth( ReturnValueFromString( g_UserUnit, msg ) ); msg = m_TxtSizeYCtrl->GetValue(); CurrentDimension->Text().SetHeight( ReturnValueFromString( g_UserUnit, msg ) ); // Get new position value: // It will be copied later in dimension, because msg = m_textCtrlPosX->GetValue(); wxPoint pos; pos.x = ReturnValueFromString( g_UserUnit, msg ); msg = m_textCtrlPosY->GetValue(); pos.y = ReturnValueFromString( g_UserUnit, msg ); CurrentDimension->Text().SetTextPosition( pos ); // Get new line thickness value: msg = m_TxtWidthCtrl->GetValue(); int width = ReturnValueFromString( g_UserUnit, msg ); int maxthickness = Clamp_Text_PenSize( width, CurrentDimension->Text().GetSize() ); if( width > maxthickness ) { DisplayError( NULL, _( "The text thickness is too large for the text size. It will be clamped") ); width = maxthickness; } CurrentDimension->SetWidth( width ); CurrentDimension->Text().SetThickness( width ); CurrentDimension->Text().SetMirrored( ( m_rbMirror->GetSelection() == 1 ) ? true : false ); CurrentDimension->SetLayer( m_SelLayerBox->GetLayerSelection() ); if( m_DC ) // Display new text { CurrentDimension->Draw( m_Parent->GetCanvas(), m_DC, GR_OR ); } m_Parent->OnModify(); EndModal( 1 ); }
/* * Abort current text edit progress. * * If a text is selected, its initial coord are regenerated */ void AbortMoveDimensionText( EDA_DRAW_PANEL* aPanel, wxDC* aDC ) { DIMENSION* dimension = (DIMENSION*) aPanel->GetScreen()->GetCurItem(); ( (PCB_EDIT_FRAME*) aPanel->GetParent() )->SetCurItem( NULL ); aPanel->SetMouseCapture( NULL, NULL ); if( dimension == NULL ) // Should not occur return; dimension->Draw( aPanel, aDC, GR_XOR ); dimension->Text().SetTextPosition( initialTextPosition ); dimension->ClearFlags(); dimension->Draw( aPanel, aDC, GR_OR ); }
/* Move dimension text following the cursor. */ static void MoveDimensionText( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase ) { DIMENSION* dimension = (DIMENSION*) aPanel->GetScreen()->GetCurItem(); if( dimension == NULL ) return; if( aErase ) dimension->Draw( aPanel, aDC, GR_XOR ); dimension->Text().SetTextPosition( aPanel->GetParent()->GetCrossHairPosition() ); dimension->Draw( aPanel, aDC, GR_XOR ); }
static void BuildDimension( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aPosition, bool aErase ) { PCB_SCREEN* screen = (PCB_SCREEN*) aPanel->GetScreen(); DIMENSION* Dimension = (DIMENSION*) screen->GetCurItem(); wxPoint pos = aPanel->GetParent()->GetCrossHairPosition(); if( Dimension == NULL ) return; // Erase previous dimension. if( aErase ) { Dimension->Draw( aPanel, aDC, GR_XOR ); } Dimension->SetLayer( screen->m_Active_Layer ); if( status_dimension == 1 ) { Dimension->m_featureLineDO = pos; Dimension->m_crossBarF = Dimension->m_featureLineDO; Dimension->AdjustDimensionDetails( ); } else { wxPoint delta; int dx, dy; double angle, depl; delta = Dimension->m_featureLineDO - Dimension->m_featureLineGO; /* Calculating the direction of travel perpendicular to the selected axis. */ angle = atan2( delta.y, delta.x ) + (M_PI / 2); delta = pos - Dimension->m_featureLineDO; depl = ( delta.x * cos( angle ) ) + ( delta.y * sin( angle ) ); dx = KiROUND( depl * cos( angle ) ); dy = KiROUND( depl * sin( angle ) ); Dimension->m_crossBarO.x = Dimension->m_featureLineGO.x + dx; Dimension->m_crossBarO.y = Dimension->m_featureLineGO.y + dy; Dimension->m_crossBarF.x = Dimension->m_featureLineDO.x + dx; Dimension->m_crossBarF.y = Dimension->m_featureLineDO.y + dy; Dimension->AdjustDimensionDetails( ); } Dimension->Draw( aPanel, aDC, GR_XOR ); }
static void AbortBuildDimension( EDA_DRAW_PANEL* Panel, wxDC* aDC ) { DIMENSION* Dimension = (DIMENSION*) Panel->GetScreen()->GetCurItem(); if( Dimension ) { if( Dimension->IsNew() ) { Dimension->Draw( Panel, aDC, GR_XOR ); Dimension->DeleteStructure(); } else { Dimension->Draw( Panel, aDC, GR_OR ); } } status_dimension = 0; ((PCB_EDIT_FRAME*)Panel->GetParent())->SetCurItem( NULL ); }
void DIALOG_DIMENSION_EDITOR::OnOKClick( wxCommandEvent& event ) { LAYER_ID newlayer = ToLAYER_ID( m_SelLayerBox->GetLayerSelection() ); if( !m_Parent->GetBoard()->IsLayerEnabled( newlayer ) ) { wxMessageBox( _( "The layer currently selected is not enabled for this board\n" "You cannot use it" ) ); return; } #ifndef USE_WX_OVERLAY if( m_DC ) // Delete old text. { CurrentDimension->Draw( m_Parent->GetCanvas(), m_DC, GR_XOR ); } #endif m_Parent->SaveCopyInUndoList(CurrentDimension, UR_CHANGED); if( m_Name->GetValue() != wxEmptyString ) { CurrentDimension->SetText( m_Name->GetValue() ); } wxString msg; // Get new size value: msg = m_TxtSizeXCtrl->GetValue(); CurrentDimension->Text().SetWidth( ValueFromString( g_UserUnit, msg ) ); msg = m_TxtSizeYCtrl->GetValue(); CurrentDimension->Text().SetHeight( ValueFromString( g_UserUnit, msg ) ); // Get new position value: // It will be copied later in dimension, because msg = m_textCtrlPosX->GetValue(); wxPoint pos; pos.x = ValueFromString( g_UserUnit, msg ); msg = m_textCtrlPosY->GetValue(); pos.y = ValueFromString( g_UserUnit, msg ); CurrentDimension->Text().SetTextPosition( pos ); // Get new line thickness value: msg = m_TxtWidthCtrl->GetValue(); int width = ValueFromString( g_UserUnit, msg ); int maxthickness = Clamp_Text_PenSize( width, CurrentDimension->Text().GetSize() ); if( width > maxthickness ) { DisplayError( NULL, _( "The text thickness is too large for the text size. " "It will be clamped" ) ); width = maxthickness; } CurrentDimension->SetWidth( width ); CurrentDimension->Text().SetThickness( width ); CurrentDimension->Text().SetMirrored( ( m_rbMirror->GetSelection() == 1 ) ? true : false ); CurrentDimension->SetLayer( newlayer ); #ifndef USE_WX_OVERLAY if( m_DC ) // Display new text { CurrentDimension->Draw( m_Parent->GetCanvas(), m_DC, GR_OR ); } #else m_Parent->Refresh(); #endif m_Parent->OnModify(); EndModal( 1 ); }
void DIALOG_DIMENSION_EDITOR::OnOKClick( wxCommandEvent& event ) { BOARD_COMMIT commit( m_parent ); PCB_LAYER_ID newlayer = ToLAYER_ID( m_SelLayerBox->GetLayerSelection() ); if( !m_parent->GetBoard()->IsLayerEnabled( newlayer ) ) { wxMessageBox( _( "The layer currently selected is not enabled for this board\n" "You cannot use it" ) ); return; } #ifndef USE_WX_OVERLAY if( m_DC ) // Delete old text. { m_currentDimension->Draw( m_parent->GetCanvas(), m_DC, GR_XOR ); } #endif commit.Modify( m_currentDimension ); if( m_Name->GetValue() != wxEmptyString ) { m_currentDimension->SetText( m_Name->GetValue() ); } wxString msg; // Get new size value: msg = m_TxtSizeXCtrl->GetValue(); m_currentDimension->Text().SetTextWidth( ValueFromString( g_UserUnit, msg ) ); msg = m_TxtSizeYCtrl->GetValue(); m_currentDimension->Text().SetTextHeight( ValueFromString( g_UserUnit, msg ) ); // Get new position value: // It will be copied later in dimension, because msg = m_textCtrlPosX->GetValue(); wxPoint pos; pos.x = ValueFromString( g_UserUnit, msg ); msg = m_textCtrlPosY->GetValue(); pos.y = ValueFromString( g_UserUnit, msg ); m_currentDimension->Text().SetTextPos( pos ); // Get new line thickness value: msg = m_TxtWidthCtrl->GetValue(); int width = ValueFromString( g_UserUnit, msg ); int maxthickness = Clamp_Text_PenSize( width, m_currentDimension->Text().GetTextSize() ); if( width > maxthickness ) { DisplayError( NULL, _( "The text thickness is too large for the text size. " "It will be clamped" ) ); width = maxthickness; } m_currentDimension->SetWidth( width ); m_currentDimension->Text().SetThickness( width ); m_currentDimension->Text().SetMirrored( ( m_rbMirror->GetSelection() == 1 ) ? true : false ); m_currentDimension->SetLayer( newlayer ); #ifndef USE_WX_OVERLAY if( m_DC ) // Display new text { m_currentDimension->Draw( m_parent->GetCanvas(), m_DC, GR_OR ); } #else m_parent->Refresh(); #endif commit.Push( _( "Modifed dimensions properties" ) ); event.Skip(); // ends returning wxID_OK (default behavior) }