From c25e5c31e104fa4a674daed63c44f69aab6c2d5b Mon Sep 17 00:00:00 2001 From: dickelbeck Date: Tue, 29 Apr 2008 03:18:02 +0000 Subject: [PATCH] bug fixes --- change_log.txt | 17 + pcbnew/controle.cpp | 1 + pcbnew/dialog_edit_mod_text.cpp | 2 +- pcbnew/dialog_general_options.cpp | 541 ++++++++++++++++++------------ pcbnew/edtxtmod.cpp | 28 +- pcbnew/files.cpp | 80 ++--- pcbnew/initpcb.cpp | 1 + pcbnew/onrightclick.cpp | 4 - pcbnew/tool_pcb.cpp | 44 ++- 9 files changed, 443 insertions(+), 275 deletions(-) diff --git a/change_log.txt b/change_log.txt index 5466a3afdb..a48dbfb8ca 100644 --- a/change_log.txt +++ b/change_log.txt @@ -5,6 +5,23 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. + +2008-Apr-28 UPDATE Dick Hollenbeck +================================================================================ ++pcbnew + * Layer names were not being set into the htoolbar listbox properly if the + BOARD was loaded via the command line as happens when kicad chain loads + pcbnew. Also, layer names were not being set if a second board was loaded + that had the same number of layers as the previous board. The solution was + to comment out the listbox rebuild test in WinEDAChoiceBox* + WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) + * files.cpp: added Clear_Pcb( false ) to LoadOnePcbFile() and call it if + not appending. This way a user can get into the file selection dialog and + still abort (change his mind) without losing the current board. Removed calls to + Clear_Pcb() where LoadOnePcbFile() would now do that. + * edtxtmod.cpp: fixed the drawing relics when moving and rotating module texts. + + 2008-Apr-21 UPDATE Jean-Pierre Charras ================================================================================ +pcbnew diff --git a/pcbnew/controle.cpp b/pcbnew/controle.cpp index df3c87cb7a..d4284e7a28 100644 --- a/pcbnew/controle.cpp +++ b/pcbnew/controle.cpp @@ -522,6 +522,7 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) if( delta.x <= 0 ) delta.x = 1; + if( delta.y <= 0 ) delta.y = 1; diff --git a/pcbnew/dialog_edit_mod_text.cpp b/pcbnew/dialog_edit_mod_text.cpp index dd5c47ee31..4bf485cac5 100644 --- a/pcbnew/dialog_edit_mod_text.cpp +++ b/pcbnew/dialog_edit_mod_text.cpp @@ -38,7 +38,7 @@ #include "dialog_edit_mod_text.h" -extern wxPoint MoveVector; // Move vector for move edge, imported from dialog_edit mod_text.cpp +extern wxPoint MoveVector; // Move vector for move edge, imported from edtxtmod.cpp ////@begin XPM images ////@end XPM images diff --git a/pcbnew/dialog_general_options.cpp b/pcbnew/dialog_general_options.cpp index b15d0c0d69..11c38f1cc3 100644 --- a/pcbnew/dialog_general_options.cpp +++ b/pcbnew/dialog_general_options.cpp @@ -1,17 +1,18 @@ ///////////////////////////////////////////////////////////////////////////// + // Name: dialog_general_options.cpp -// Purpose: +// Purpose: // Author: jean-pierre Charras -// Modified by: +// Modified by: // Created: 21/01/2006 18:28:47 -// RCS-ID: +// RCS-ID: // Copyright: License GNU -// Licence: +// Licence: ///////////////////////////////////////////////////////////////////////////// // Generated by DialogBlocks (unregistered), 21/01/2006 18:28:47 -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) +#if defined (__GNUG__) && !defined (NO_GCC_PRAGMA) #pragma implementation "dialog_general_options.h" #endif @@ -40,44 +41,46 @@ ////@end XPM images +/*****************************************************************/ +void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) +/*****************************************************************/ -/*****************************************************************/ -void WinEDA_PcbFrame::OnSelectOptionToolbar(wxCommandEvent& event) -/*****************************************************************/ /* Mises a jour de differentes variables de gestion d'options apres action sur -le toolbar d'options -*/ + * le toolbar d'options + */ { -int id = event.GetId(); -wxClientDC dc(DrawPanel); + int id = event.GetId(); - DrawPanel->CursorOff(&dc); - DrawPanel->PrepareGraphicContext(&dc); + wxClientDC dc( DrawPanel ); - switch ( id ) + DrawPanel->CursorOff( &dc ); + DrawPanel->PrepareGraphicContext( &dc ); + + switch( id ) { case ID_TB_OPTIONS_DRC_OFF: - Drc_On = m_OptionsToolBar->GetToolState(id) ? FALSE : TRUE; + Drc_On = m_OptionsToolBar->GetToolState( id ) ? FALSE : TRUE; break; case ID_TB_OPTIONS_SHOW_GRID: - m_Draw_Grid = g_ShowGrid = m_OptionsToolBar->GetToolState(id); - DrawPanel->ReDraw(&dc, TRUE); + m_Draw_Grid = g_ShowGrid = m_OptionsToolBar->GetToolState( id ); + DrawPanel->ReDraw( &dc, TRUE ); break; case ID_TB_OPTIONS_SHOW_RATSNEST: - g_Show_Ratsnest = m_OptionsToolBar->GetToolState(id); - Ratsnest_On_Off(&dc); + g_Show_Ratsnest = m_OptionsToolBar->GetToolState( id ); + Ratsnest_On_Off( &dc ); break; case ID_TB_OPTIONS_SHOW_MODULE_RATSNEST: - g_Show_Module_Ratsnest = m_OptionsToolBar->GetToolState(id); + g_Show_Module_Ratsnest = m_OptionsToolBar->GetToolState( id ); break; case ID_TB_OPTIONS_SELECT_UNIT_MM: g_UnitMetric = MILLIMETRE; + case ID_TB_OPTIONS_SELECT_UNIT_INCH: - if ( id == ID_TB_OPTIONS_SELECT_UNIT_INCH ) + if( id == ID_TB_OPTIONS_SELECT_UNIT_INCH ) g_UnitMetric = INCHES; m_SelTrackWidthBox_Changed = TRUE; Affiche_Status_Box(); /* Reaffichage des coord curseur */ @@ -86,44 +89,44 @@ wxClientDC dc(DrawPanel); break; case ID_TB_OPTIONS_SHOW_POLAR_COORD: - Affiche_Message(wxEmptyString); - DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState(id); + Affiche_Message( wxEmptyString ); + DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState( id ); Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SELECT_CURSOR: - g_CursorShape = m_OptionsToolBar->GetToolState(id); + g_CursorShape = m_OptionsToolBar->GetToolState( id ); break; case ID_TB_OPTIONS_AUTO_DEL_TRACK: - g_AutoDeleteOldTrack = m_OptionsToolBar->GetToolState(id); + g_AutoDeleteOldTrack = m_OptionsToolBar->GetToolState( id ); break; case ID_TB_OPTIONS_SHOW_ZONES: - DisplayOpt.DisplayZones = m_OptionsToolBar->GetToolState(id); - DrawPanel->ReDraw(&dc, TRUE); + DisplayOpt.DisplayZones = m_OptionsToolBar->GetToolState( id ); + DrawPanel->ReDraw( &dc, TRUE ); break; case ID_TB_OPTIONS_SHOW_PADS_SKETCH: m_DisplayPadFill = DisplayOpt.DisplayPadFill = - ! m_OptionsToolBar->GetToolState(id); - DrawPanel->ReDraw(&dc, TRUE); + !m_OptionsToolBar->GetToolState( id ); + DrawPanel->ReDraw( &dc, TRUE ); break; case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH: m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill = - ! m_OptionsToolBar->GetToolState(id); - DrawPanel->ReDraw(&dc, TRUE); + !m_OptionsToolBar->GetToolState( id ); + DrawPanel->ReDraw( &dc, TRUE ); break; case ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE: DisplayOpt.ContrastModeDisplay = - m_OptionsToolBar->GetToolState(id); - DrawPanel->ReDraw(&dc, TRUE); + m_OptionsToolBar->GetToolState( id ); + DrawPanel->ReDraw( &dc, TRUE ); break; case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1: - if ( m_OptionsToolBar->GetToolState(id) ) // show aux V toolbar (Microwave tool) + if( m_OptionsToolBar->GetToolState( id ) ) // show aux V toolbar (Microwave tool) ReCreateAuxVToolbar(); else { @@ -131,18 +134,20 @@ wxClientDC dc(DrawPanel); m_AuxVToolBar = NULL; } { - wxSizeEvent SizeEv(GetSize()); - OnSize(SizeEv); + wxSizeEvent SizeEv( GetSize() ); + + OnSize( SizeEv ); } break; default: - DisplayError(this, wxT("WinEDA_PcbFrame::OnSelectOptionToolbar error \n (event not handled!)")); + DisplayError( this, + wxT( "WinEDA_PcbFrame::OnSelectOptionToolbar error \n (event not handled!)" ) ); break; } SetToolbars(); - DrawPanel->CursorOn(&dc); + DrawPanel->CursorOn( &dc ); } @@ -159,9 +164,9 @@ IMPLEMENT_DYNAMIC_CLASS( WinEDA_PcbGeneralOptionsFrame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_PcbGeneralOptionsFrame, wxDialog ) ////@begin WinEDA_PcbGeneralOptionsFrame event table entries - EVT_BUTTON( wxID_OK, WinEDA_PcbGeneralOptionsFrame::OnOkClick ) +EVT_BUTTON( wxID_OK, WinEDA_PcbGeneralOptionsFrame::OnOkClick ) - EVT_BUTTON( wxID_CANCEL, WinEDA_PcbGeneralOptionsFrame::OnCancelClick ) +EVT_BUTTON( wxID_CANCEL, WinEDA_PcbGeneralOptionsFrame::OnCancelClick ) ////@end WinEDA_PcbGeneralOptionsFrame event table entries @@ -171,221 +176,325 @@ END_EVENT_TABLE() * WinEDA_PcbGeneralOptionsFrame constructors */ -WinEDA_PcbGeneralOptionsFrame::WinEDA_PcbGeneralOptionsFrame( ) +WinEDA_PcbGeneralOptionsFrame::WinEDA_PcbGeneralOptionsFrame() { } -WinEDA_PcbGeneralOptionsFrame::WinEDA_PcbGeneralOptionsFrame( WinEDA_PcbFrame* parent, wxDC * DC, - wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) + +WinEDA_PcbGeneralOptionsFrame::WinEDA_PcbGeneralOptionsFrame( WinEDA_PcbFrame* parent, + wxDC* DC, + wxWindowID id, + const wxString& caption, + const wxPoint& pos, + const wxSize& size, + long style ) { m_Parent = parent; m_DC = DC; - Create(parent, id, caption, pos, size, style); - - /* Set display options */ - m_PolarDisplay->SetSelection(DisplayOpt.DisplayPolarCood ? 1 : 0); - m_BoxUnits->SetSelection( g_UnitMetric ? 1 : 0); - m_CursorShape->SetSelection( g_CursorShape ? 1 : 0); - -wxString timevalue; - timevalue << g_TimeOut / 60; - m_SaveTime->SetValue(timevalue); - m_LayerNumber->SetValue(g_DesignSettings.m_CopperLayerCount); - m_MaxShowLinks->SetValue(g_MaxLinksShowed); + Create( parent, id, caption, pos, size, style ); - m_DrcOn->SetValue(Drc_On ); - m_ShowModuleRatsnest->SetValue(g_Show_Module_Ratsnest); - m_ShowGlobalRatsnest->SetValue(g_Show_Ratsnest); - m_TrackAutodel->SetValue(g_AutoDeleteOldTrack); - m_Track_45_Only_Ctrl->SetValue(Track_45_Only); - m_Segments_45_Only_Ctrl->SetValue(Segments_45_Only); - m_AutoPANOpt->SetValue(m_Parent->DrawPanel-> m_AutoPAN_Enable); - m_Segments_45_Only_Ctrl->SetValue(Segments_45_Only); - m_Track_DoubleSegm_Ctrl->SetValue(g_TwoSegmentTrackBuild); + /* Set display options */ + m_PolarDisplay->SetSelection( DisplayOpt.DisplayPolarCood ? 1 : 0 ); + m_BoxUnits->SetSelection( g_UnitMetric ? 1 : 0 ); + m_CursorShape->SetSelection( g_CursorShape ? 1 : 0 ); + + wxString timevalue; + timevalue << g_TimeOut / 60; + m_SaveTime->SetValue( timevalue ); + m_LayerNumber->SetValue( g_DesignSettings.m_CopperLayerCount ); + m_MaxShowLinks->SetValue( g_MaxLinksShowed ); + + m_DrcOn->SetValue( Drc_On ); + m_ShowModuleRatsnest->SetValue( g_Show_Module_Ratsnest ); + m_ShowGlobalRatsnest->SetValue( g_Show_Ratsnest ); + m_TrackAutodel->SetValue( g_AutoDeleteOldTrack ); + m_Track_45_Only_Ctrl->SetValue( Track_45_Only ); + m_Segments_45_Only_Ctrl->SetValue( Segments_45_Only ); + m_AutoPANOpt->SetValue( m_Parent->DrawPanel->m_AutoPAN_Enable ); + m_Segments_45_Only_Ctrl->SetValue( Segments_45_Only ); + m_Track_DoubleSegm_Ctrl->SetValue( g_TwoSegmentTrackBuild ); } + /*! * WinEDA_PcbGeneralOptionsFrame creator */ -bool WinEDA_PcbGeneralOptionsFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) +bool WinEDA_PcbGeneralOptionsFrame::Create( wxWindow* parent, + wxWindowID id, + const wxString& caption, + const wxPoint& pos, + const wxSize& size, + long style ) { ////@begin WinEDA_PcbGeneralOptionsFrame member initialisation m_PolarDisplay = NULL; - m_BoxUnits = NULL; - m_CursorShape = NULL; - m_LayerNumber = NULL; + m_BoxUnits = NULL; + m_CursorShape = NULL; + m_LayerNumber = NULL; m_MaxShowLinks = NULL; m_SaveTime = NULL; - m_DrcOn = NULL; + m_DrcOn = NULL; m_ShowGlobalRatsnest = NULL; m_ShowModuleRatsnest = NULL; m_TrackAutodel = NULL; - m_Track_45_Only_Ctrl = NULL; + m_Track_45_Only_Ctrl = NULL; m_Segments_45_Only_Ctrl = NULL; m_AutoPANOpt = NULL; m_Track_DoubleSegm_Ctrl = NULL; - m_MagneticPadOptCtrl = NULL; - m_MagneticTrackOptCtrl = NULL; + m_MagneticPadOptCtrl = NULL; + m_MagneticTrackOptCtrl = NULL; + ////@end WinEDA_PcbGeneralOptionsFrame member initialisation ////@begin WinEDA_PcbGeneralOptionsFrame creation - SetExtraStyle(wxWS_EX_BLOCK_EVENTS); + SetExtraStyle( wxWS_EX_BLOCK_EVENTS ); wxDialog::Create( parent, id, caption, pos, size, style ); CreateControls(); - if (GetSizer()) + if( GetSizer() ) { - GetSizer()->SetSizeHints(this); + GetSizer()->SetSizeHints( this ); } Centre(); + ////@end WinEDA_PcbGeneralOptionsFrame creation - SetFont(*g_DialogFont); + SetFont( *g_DialogFont ); return true; } + /*! * Control creation for WinEDA_PcbGeneralOptionsFrame */ void WinEDA_PcbGeneralOptionsFrame::CreateControls() -{ +{ ////@begin WinEDA_PcbGeneralOptionsFrame content construction // Generated by DialogBlocks, Mon 03 Mar 2008 04:27:22 PM EST (unregistered) WinEDA_PcbGeneralOptionsFrame* itemDialog1 = this; - wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxHORIZONTAL); - itemDialog1->SetSizer(itemBoxSizer2); + wxBoxSizer* itemBoxSizer2 = new wxBoxSizer( wxHORIZONTAL ); - wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer2->Add(itemBoxSizer3, 0, wxGROW|wxALL, 5); + itemDialog1->SetSizer( itemBoxSizer2 ); + + wxBoxSizer* itemBoxSizer3 = new wxBoxSizer( wxVERTICAL ); + + itemBoxSizer2->Add( itemBoxSizer3, 0, wxGROW | wxALL, 5 ); wxArrayString m_PolarDisplayStrings; - m_PolarDisplayStrings.Add(_("No Display")); - m_PolarDisplayStrings.Add(_("Display")); - m_PolarDisplay = new wxRadioBox( itemDialog1, ID_RADIOBOX, _("Display Polar Coord"), wxDefaultPosition, wxDefaultSize, m_PolarDisplayStrings, 1, wxRA_SPECIFY_COLS ); - m_PolarDisplay->SetSelection(0); - itemBoxSizer3->Add(m_PolarDisplay, 0, wxALIGN_LEFT|wxALL, 5); + m_PolarDisplayStrings.Add( _( "No Display" ) ); + m_PolarDisplayStrings.Add( _( "Display" ) ); + m_PolarDisplay = new wxRadioBox( itemDialog1, ID_RADIOBOX, _( + "Display Polar Coord" ), wxDefaultPosition, wxDefaultSize, + m_PolarDisplayStrings, 1, + wxRA_SPECIFY_COLS ); + + m_PolarDisplay->SetSelection( 0 ); + itemBoxSizer3->Add( m_PolarDisplay, 0, wxALIGN_LEFT | wxALL, 5 ); wxArrayString m_BoxUnitsStrings; - m_BoxUnitsStrings.Add(_("Inches")); - m_BoxUnitsStrings.Add(_("millimeters")); - m_BoxUnits = new wxRadioBox( itemDialog1, ID_RADIOBOX1, _("Units"), wxDefaultPosition, wxDefaultSize, m_BoxUnitsStrings, 1, wxRA_SPECIFY_COLS ); - m_BoxUnits->SetSelection(0); - itemBoxSizer3->Add(m_BoxUnits, 0, wxALIGN_LEFT|wxALL, 5); + m_BoxUnitsStrings.Add( _( "Inches" ) ); + m_BoxUnitsStrings.Add( _( "millimeters" ) ); + m_BoxUnits = new wxRadioBox( itemDialog1, ID_RADIOBOX1, _( + "Units" ), wxDefaultPosition, wxDefaultSize, + m_BoxUnitsStrings, 1, wxRA_SPECIFY_COLS ); + + m_BoxUnits->SetSelection( 0 ); + itemBoxSizer3->Add( m_BoxUnits, 0, wxALIGN_LEFT | wxALL, 5 ); wxArrayString m_CursorShapeStrings; - m_CursorShapeStrings.Add(_("Small")); - m_CursorShapeStrings.Add(_("Big")); - m_CursorShape = new wxRadioBox( itemDialog1, ID_RADIOBOX2, _("Cursor"), wxDefaultPosition, wxDefaultSize, m_CursorShapeStrings, 1, wxRA_SPECIFY_COLS ); - m_CursorShape->SetSelection(0); - itemBoxSizer3->Add(m_CursorShape, 0, wxALIGN_LEFT|wxALL, 5); + m_CursorShapeStrings.Add( _( "Small" ) ); + m_CursorShapeStrings.Add( _( "Big" ) ); + m_CursorShape = new wxRadioBox( itemDialog1, ID_RADIOBOX2, _( + "Cursor" ), + wxDefaultPosition, + wxDefaultSize, m_CursorShapeStrings, 1, wxRA_SPECIFY_COLS ); - wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer2->Add(itemBoxSizer7, 0, wxGROW|wxALL, 5); + m_CursorShape->SetSelection( 0 ); + itemBoxSizer3->Add( m_CursorShape, 0, wxALIGN_LEFT | wxALL, 5 ); - wxStaticBox* itemStaticBoxSizer8Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Number of Layers:")); - wxStaticBoxSizer* itemStaticBoxSizer8 = new wxStaticBoxSizer(itemStaticBoxSizer8Static, wxVERTICAL); - itemBoxSizer7->Add(itemStaticBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + wxBoxSizer* itemBoxSizer7 = new wxBoxSizer( wxVERTICAL ); - m_LayerNumber = new wxSpinCtrl( itemDialog1, ID_SPINCTRL1, _T("1"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 16, 1 ); - itemStaticBoxSizer8->Add(m_LayerNumber, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + itemBoxSizer2->Add( itemBoxSizer7, 0, wxGROW | wxALL, 5 ); - wxStaticBox* itemStaticBoxSizer10Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Max Links:")); - wxStaticBoxSizer* itemStaticBoxSizer10 = new wxStaticBoxSizer(itemStaticBoxSizer10Static, wxVERTICAL); - itemBoxSizer7->Add(itemStaticBoxSizer10, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + wxStaticBox* itemStaticBoxSizer8Static = new wxStaticBox( itemDialog1, wxID_ANY, _( + "Number of Layers:" ) ); - m_MaxShowLinks = new wxSpinCtrl( itemDialog1, ID_SPINCTRL2, _T("1"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 5, 1 ); - itemStaticBoxSizer10->Add(m_MaxShowLinks, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + wxStaticBoxSizer* itemStaticBoxSizer8 = new wxStaticBoxSizer( + itemStaticBoxSizer8Static, + wxVERTICAL ); - wxStaticBox* itemStaticBoxSizer12Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Auto Save (minuts):")); - wxStaticBoxSizer* itemStaticBoxSizer12 = new wxStaticBoxSizer(itemStaticBoxSizer12Static, wxVERTICAL); - itemBoxSizer7->Add(itemStaticBoxSizer12, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + itemBoxSizer7->Add( itemStaticBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); - m_SaveTime = new wxSpinCtrl( itemDialog1, ID_SPINCTRL3, _T("0"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 60, 0 ); - itemStaticBoxSizer12->Add(m_SaveTime, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + m_LayerNumber = new wxSpinCtrl( itemDialog1, ID_SPINCTRL1, _T( + "1" ), wxDefaultPosition, + wxDefaultSize, wxSP_ARROW_KEYS, + 1, 16, 1 ); - wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer2->Add(itemBoxSizer14, 0, wxGROW|wxALL, 5); + itemStaticBoxSizer8->Add( m_LayerNumber, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); - wxStaticBox* itemStaticBoxSizer15Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Options:")); - wxStaticBoxSizer* itemStaticBoxSizer15 = new wxStaticBoxSizer(itemStaticBoxSizer15Static, wxVERTICAL); - itemBoxSizer14->Add(itemStaticBoxSizer15, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + wxStaticBox* itemStaticBoxSizer10Static = new wxStaticBox( itemDialog1, wxID_ANY, _( + "Max Links:" ) ); - m_DrcOn = new wxCheckBox( itemDialog1, ID_CHECKBOX, _("Drc ON"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_DrcOn->SetValue(false); - m_DrcOn->SetForegroundColour(wxColour(198, 0, 0)); - itemStaticBoxSizer15->Add(m_DrcOn, 0, wxALIGN_LEFT|wxALL, 5); + wxStaticBoxSizer* itemStaticBoxSizer10 = new wxStaticBoxSizer( + itemStaticBoxSizer10Static, + wxVERTICAL ); - m_ShowGlobalRatsnest = new wxCheckBox( itemDialog1, ID_CHECKBOX1, _("Show Ratsnest"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_ShowGlobalRatsnest->SetValue(false); - itemStaticBoxSizer15->Add(m_ShowGlobalRatsnest, 0, wxALIGN_LEFT|wxALL, 5); + itemBoxSizer7->Add( itemStaticBoxSizer10, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); - m_ShowModuleRatsnest = new wxCheckBox( itemDialog1, ID_CHECKBOX2, _("Show Mod Ratsnest"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_ShowModuleRatsnest->SetValue(false); - itemStaticBoxSizer15->Add(m_ShowModuleRatsnest, 0, wxALIGN_LEFT|wxALL, 5); + m_MaxShowLinks = new wxSpinCtrl( itemDialog1, ID_SPINCTRL2, _T( + "1" ), wxDefaultPosition, + wxDefaultSize, wxSP_ARROW_KEYS, + 1, 5, 1 ); - m_TrackAutodel = new wxCheckBox( itemDialog1, ID_CHECKBOX3, _("Tracks Auto Del"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_TrackAutodel->SetValue(false); - itemStaticBoxSizer15->Add(m_TrackAutodel, 0, wxALIGN_LEFT|wxALL, 5); + itemStaticBoxSizer10->Add( m_MaxShowLinks, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); - m_Track_45_Only_Ctrl = new wxCheckBox( itemDialog1, ID_CHECKBOX4, _("Track 45 Only"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_Track_45_Only_Ctrl->SetValue(false); - itemStaticBoxSizer15->Add(m_Track_45_Only_Ctrl, 0, wxALIGN_LEFT|wxALL, 5); + wxStaticBox* itemStaticBoxSizer12Static = new wxStaticBox( itemDialog1, wxID_ANY, _( + "Auto Save (minuts):" ) ); - m_Segments_45_Only_Ctrl = new wxCheckBox( itemDialog1, ID_CHECKBOX5, _("Segments 45 Only"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_Segments_45_Only_Ctrl->SetValue(false); - itemStaticBoxSizer15->Add(m_Segments_45_Only_Ctrl, 0, wxALIGN_LEFT|wxALL, 5); + wxStaticBoxSizer* itemStaticBoxSizer12 = new wxStaticBoxSizer( + itemStaticBoxSizer12Static, + wxVERTICAL ); - m_AutoPANOpt = new wxCheckBox( itemDialog1, ID_CHECKBOX6, _("Auto PAN"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AutoPANOpt->SetValue(false); - m_AutoPANOpt->SetForegroundColour(wxColour(0, 0, 255)); - itemStaticBoxSizer15->Add(m_AutoPANOpt, 0, wxALIGN_LEFT|wxALL, 5); + itemBoxSizer7->Add( itemStaticBoxSizer12, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); - m_Track_DoubleSegm_Ctrl = new wxCheckBox( itemDialog1, ID_CHECKBOX7, _("Double Segm Track"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_Track_DoubleSegm_Ctrl->SetValue(false); - m_Track_DoubleSegm_Ctrl->SetForegroundColour(wxColour(0, 144, 0)); - itemStaticBoxSizer15->Add(m_Track_DoubleSegm_Ctrl, 0, wxALIGN_LEFT|wxALL, 5); + m_SaveTime = new wxSpinCtrl( itemDialog1, ID_SPINCTRL3, _T( + "0" ), wxDefaultPosition, + wxDefaultSize, wxSP_ARROW_KEYS, + 0, 60, 0 ); - wxBoxSizer* itemBoxSizer24 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer2->Add(itemBoxSizer24, 0, wxALIGN_TOP|wxALL, 5); + itemStaticBoxSizer12->Add( m_SaveTime, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); + + wxBoxSizer* itemBoxSizer14 = new wxBoxSizer( wxVERTICAL ); + + itemBoxSizer2->Add( itemBoxSizer14, 0, wxGROW | wxALL, 5 ); + + wxStaticBox* itemStaticBoxSizer15Static = new wxStaticBox( itemDialog1, wxID_ANY, _( + "Options:" ) ); + + wxStaticBoxSizer* itemStaticBoxSizer15 = new wxStaticBoxSizer( + itemStaticBoxSizer15Static, + wxVERTICAL ); + + itemBoxSizer14->Add( itemStaticBoxSizer15, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); + + m_DrcOn = new wxCheckBox( itemDialog1, ID_CHECKBOX, _( + "Drc ON" ), + wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + + m_DrcOn->SetValue( false ); + m_DrcOn->SetForegroundColour( wxColour( 198, 0, 0 ) ); + itemStaticBoxSizer15->Add( m_DrcOn, 0, wxALIGN_LEFT | wxALL, 5 ); + + m_ShowGlobalRatsnest = new wxCheckBox( itemDialog1, ID_CHECKBOX1, _( + "Show Ratsnest" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + + m_ShowGlobalRatsnest->SetValue( false ); + itemStaticBoxSizer15->Add( m_ShowGlobalRatsnest, 0, wxALIGN_LEFT | wxALL, 5 ); + + m_ShowModuleRatsnest = new wxCheckBox( itemDialog1, ID_CHECKBOX2, _( + "Show Mod Ratsnest" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + + m_ShowModuleRatsnest->SetValue( false ); + itemStaticBoxSizer15->Add( m_ShowModuleRatsnest, 0, wxALIGN_LEFT | wxALL, 5 ); + + m_TrackAutodel = new wxCheckBox( itemDialog1, ID_CHECKBOX3, _( + "Tracks Auto Del" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + + m_TrackAutodel->SetValue( false ); + itemStaticBoxSizer15->Add( m_TrackAutodel, 0, wxALIGN_LEFT | wxALL, 5 ); + + m_Track_45_Only_Ctrl = new wxCheckBox( itemDialog1, ID_CHECKBOX4, _( + "Track 45 Only" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + + m_Track_45_Only_Ctrl->SetValue( false ); + itemStaticBoxSizer15->Add( m_Track_45_Only_Ctrl, 0, wxALIGN_LEFT | wxALL, 5 ); + + m_Segments_45_Only_Ctrl = new wxCheckBox( itemDialog1, ID_CHECKBOX5, _( + "Segments 45 Only" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + + m_Segments_45_Only_Ctrl->SetValue( false ); + itemStaticBoxSizer15->Add( m_Segments_45_Only_Ctrl, 0, wxALIGN_LEFT | wxALL, 5 ); + + m_AutoPANOpt = new wxCheckBox( itemDialog1, ID_CHECKBOX6, _( + "Auto PAN" ), wxDefaultPosition, wxDefaultSize, + wxCHK_2STATE ); + + m_AutoPANOpt->SetValue( false ); + m_AutoPANOpt->SetForegroundColour( wxColour( 0, 0, 255 ) ); + itemStaticBoxSizer15->Add( m_AutoPANOpt, 0, wxALIGN_LEFT | wxALL, 5 ); + + m_Track_DoubleSegm_Ctrl = new wxCheckBox( itemDialog1, ID_CHECKBOX7, _( + "Double Segm Track" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + + m_Track_DoubleSegm_Ctrl->SetValue( false ); + m_Track_DoubleSegm_Ctrl->SetForegroundColour( wxColour( 0, 144, 0 ) ); + itemStaticBoxSizer15->Add( m_Track_DoubleSegm_Ctrl, 0, wxALIGN_LEFT | wxALL, 5 ); + + wxBoxSizer* itemBoxSizer24 = new wxBoxSizer( wxVERTICAL ); + + itemBoxSizer2->Add( itemBoxSizer24, 0, wxALIGN_TOP | wxALL, 5 ); wxArrayString m_MagneticPadOptCtrlStrings; - m_MagneticPadOptCtrlStrings.Add(_("Never")); - m_MagneticPadOptCtrlStrings.Add(_("When creating tracks")); - m_MagneticPadOptCtrlStrings.Add(_("Always")); - m_MagneticPadOptCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX4, _("Magnetic Pads"), wxDefaultPosition, wxDefaultSize, m_MagneticPadOptCtrlStrings, 1, wxRA_SPECIFY_COLS ); - m_MagneticPadOptCtrl->SetSelection(0); - if (WinEDA_PcbGeneralOptionsFrame::ShowToolTips()) - m_MagneticPadOptCtrl->SetToolTip(_("control the capture of the pcb cursor when the mouse cursor enters a pad area")); - itemBoxSizer24->Add(m_MagneticPadOptCtrl, 0, wxGROW|wxALL, 5); + m_MagneticPadOptCtrlStrings.Add( _( "Never" ) ); + m_MagneticPadOptCtrlStrings.Add( _( "When creating tracks" ) ); + m_MagneticPadOptCtrlStrings.Add( _( "Always" ) ); + m_MagneticPadOptCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX4, _( + "Magnetic Pads" ), wxDefaultPosition, wxDefaultSize, + m_MagneticPadOptCtrlStrings, 1, + wxRA_SPECIFY_COLS ); + + m_MagneticPadOptCtrl->SetSelection( 0 ); + if( WinEDA_PcbGeneralOptionsFrame::ShowToolTips() ) + m_MagneticPadOptCtrl->SetToolTip( _( + "control the capture of the pcb cursor when the mouse cursor enters a pad area" ) ); + itemBoxSizer24->Add( m_MagneticPadOptCtrl, 0, wxGROW | wxALL, 5 ); wxArrayString m_MagneticTrackOptCtrlStrings; - m_MagneticTrackOptCtrlStrings.Add(_("Never")); - m_MagneticTrackOptCtrlStrings.Add(_("When creating tracks")); - m_MagneticTrackOptCtrlStrings.Add(_("Always")); - m_MagneticTrackOptCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX3, _("Magnetic Tracks"), wxDefaultPosition, wxDefaultSize, m_MagneticTrackOptCtrlStrings, 1, wxRA_SPECIFY_COLS ); - m_MagneticTrackOptCtrl->SetSelection(0); - if (WinEDA_PcbGeneralOptionsFrame::ShowToolTips()) - m_MagneticTrackOptCtrl->SetToolTip(_("control the capture of the pcb cursor when the mouse cursor enters a track")); - itemBoxSizer24->Add(m_MagneticTrackOptCtrl, 0, wxGROW|wxALL, 5); + m_MagneticTrackOptCtrlStrings.Add( _( "Never" ) ); + m_MagneticTrackOptCtrlStrings.Add( _( "When creating tracks" ) ); + m_MagneticTrackOptCtrlStrings.Add( _( "Always" ) ); + m_MagneticTrackOptCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX3, _( + "Magnetic Tracks" ), wxDefaultPosition, + wxDefaultSize, m_MagneticTrackOptCtrlStrings, 1, + wxRA_SPECIFY_COLS ); - wxButton* itemButton27 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); - itemButton27->SetForegroundColour(wxColour(221, 0, 0)); - itemBoxSizer24->Add(itemButton27, 0, wxGROW|wxALL, 5); + m_MagneticTrackOptCtrl->SetSelection( 0 ); + if( WinEDA_PcbGeneralOptionsFrame::ShowToolTips() ) + m_MagneticTrackOptCtrl->SetToolTip( _( + "control the capture of the pcb cursor when the mouse cursor enters a track" ) ); + itemBoxSizer24->Add( m_MagneticTrackOptCtrl, 0, wxGROW | wxALL, 5 ); - wxButton* itemButton28 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); - itemButton28->SetForegroundColour(wxColour(0, 0, 255)); - itemBoxSizer24->Add(itemButton28, 0, wxGROW|wxALL, 5); + wxButton* itemButton27 = new wxButton( itemDialog1, wxID_OK, _( + "&OK" ), wxDefaultPosition, wxDefaultSize, 0 ); + + itemButton27->SetForegroundColour( wxColour( 221, 0, 0 ) ); + itemBoxSizer24->Add( itemButton27, 0, wxGROW | wxALL, 5 ); + + wxButton* itemButton28 = new wxButton( itemDialog1, wxID_CANCEL, _( + "&Cancel" ), wxDefaultPosition, wxDefaultSize, 0 ); + + itemButton28->SetForegroundColour( wxColour( 0, 0, 255 ) ); + itemBoxSizer24->Add( itemButton28, 0, wxGROW | wxALL, 5 ); // Set validators - m_MagneticPadOptCtrl->SetValidator( wxGenericValidator(& g_MagneticPadOption) ); - m_MagneticTrackOptCtrl->SetValidator( wxGenericValidator(& g_MagneticTrackOption) ); + m_MagneticPadOptCtrl->SetValidator( wxGenericValidator( &g_MagneticPadOption ) ); + m_MagneticTrackOptCtrl->SetValidator( wxGenericValidator( &g_MagneticTrackOption ) ); + ////@end WinEDA_PcbGeneralOptionsFrame content construction } + /*! * Should we show tooltips? */ @@ -395,6 +504,7 @@ bool WinEDA_PcbGeneralOptionsFrame::ShowToolTips() return true; } + /*! * Get bitmap resources */ @@ -403,11 +513,13 @@ wxBitmap WinEDA_PcbGeneralOptionsFrame::GetBitmapResource( const wxString& name { // Bitmap retrieval ////@begin WinEDA_PcbGeneralOptionsFrame bitmap retrieval - wxUnusedVar(name); + wxUnusedVar( name ); return wxNullBitmap; + ////@end WinEDA_PcbGeneralOptionsFrame bitmap retrieval } + /*! * Get icon resources */ @@ -416,11 +528,13 @@ wxIcon WinEDA_PcbGeneralOptionsFrame::GetIconResource( const wxString& name ) { // Icon retrieval ////@begin WinEDA_PcbGeneralOptionsFrame icon retrieval - wxUnusedVar(name); + wxUnusedVar( name ); return wxNullIcon; + ////@end WinEDA_PcbGeneralOptionsFrame icon retrieval } + /*! * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL */ @@ -430,62 +544,66 @@ void WinEDA_PcbGeneralOptionsFrame::OnCancelClick( wxCommandEvent& event ) ////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK in WinEDA_PcbGeneralOptionsFrame. // Before editing this code, remove the block markers. event.Skip(); -////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK in WinEDA_PcbGeneralOptionsFrame. + +////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK in WinEDA_PcbGeneralOptionsFrame. } + + /*! * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK */ void WinEDA_PcbGeneralOptionsFrame::OnOkClick( wxCommandEvent& event ) { - AcceptPcbOptions(event); + AcceptPcbOptions( event ); + ////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK in WinEDA_PcbGeneralOptionsFrame. // Before editing this code, remove the block markers. event.Skip(); -////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK in WinEDA_PcbGeneralOptionsFrame. + +////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK in WinEDA_PcbGeneralOptionsFrame. } - /**************************************************************************/ -void WinEDA_PcbGeneralOptionsFrame::AcceptPcbOptions(wxCommandEvent& event) +void WinEDA_PcbGeneralOptionsFrame::AcceptPcbOptions( wxCommandEvent& event ) /**************************************************************************/ { -int ii; + int ii; DisplayOpt.DisplayPolarCood = (m_PolarDisplay->GetSelection() == 0) ? FALSE : TRUE; ii = g_UnitMetric; g_UnitMetric = (m_BoxUnits->GetSelection() == 0) ? 0 : 1; - if ( ii != g_UnitMetric ) m_Parent->ReCreateAuxiliaryToolbar(); + if( ii != g_UnitMetric ) + m_Parent->ReCreateAuxiliaryToolbar(); g_CursorShape = m_CursorShape->GetSelection(); g_TimeOut = 60 * m_SaveTime->GetValue(); /* Mise a jour de la combobox d'affichage de la couche active */ g_DesignSettings.m_CopperLayerCount = m_LayerNumber->GetValue(); - m_Parent->ReCreateLayerBox(NULL); + m_Parent->ReCreateLayerBox( NULL ); g_MaxLinksShowed = m_MaxShowLinks->GetValue(); Drc_On = m_DrcOn->GetValue(); - if ( g_Show_Ratsnest != m_ShowGlobalRatsnest->GetValue() ) + if( g_Show_Ratsnest != m_ShowGlobalRatsnest->GetValue() ) { g_Show_Ratsnest = m_ShowGlobalRatsnest->GetValue(); - m_Parent->Ratsnest_On_Off(m_DC); + m_Parent->Ratsnest_On_Off( m_DC ); } g_Show_Module_Ratsnest = m_ShowModuleRatsnest->GetValue(); - g_AutoDeleteOldTrack = m_TrackAutodel->GetValue(); + g_AutoDeleteOldTrack = m_TrackAutodel->GetValue(); Segments_45_Only = m_Segments_45_Only_Ctrl->GetValue(); - Track_45_Only = m_Track_45_Only_Ctrl->GetValue(); + Track_45_Only = m_Track_45_Only_Ctrl->GetValue(); m_Parent->DrawPanel->m_AutoPAN_Enable = m_AutoPANOpt->GetValue(); g_TwoSegmentTrackBuild = m_Track_DoubleSegm_Ctrl->GetValue(); - EndModal(1); + EndModal( 1 ); } -enum id_optpcb -{ +enum id_optpcb { ID_ACCEPT_OPT = 1000, ID_CANCEL_OPT }; @@ -495,42 +613,49 @@ enum id_optpcb #include "dialog_graphic_items_options.cpp" /*****************************************************************/ -void WinEDA_PcbFrame::InstallPcbOptionsFrame(const wxPoint & pos, - wxDC * DC, int id) +void WinEDA_PcbFrame::InstallPcbOptionsFrame( const wxPoint& pos, + wxDC* DC, int id ) /*****************************************************************/ { - - switch ( id ) + switch( id ) { case ID_PCB_TRACK_SIZE_SETUP: { - WinEDA_PcbTracksDialog * OptionsFrame = - new WinEDA_PcbTracksDialog(this); - OptionsFrame->ShowModal(); OptionsFrame->Destroy(); + WinEDA_PcbTracksDialog* OptionsFrame = + new WinEDA_PcbTracksDialog( this ); + + OptionsFrame->ShowModal(); + OptionsFrame->Destroy(); } break; case ID_PCB_DRAWINGS_WIDTHS_SETUP: { - WinEDA_GraphicItemsOptionsDialog * OptionsFrame = - new WinEDA_GraphicItemsOptionsDialog(this); - OptionsFrame->ShowModal(); OptionsFrame->Destroy(); + WinEDA_GraphicItemsOptionsDialog* OptionsFrame = + new WinEDA_GraphicItemsOptionsDialog( this ); + + OptionsFrame->ShowModal(); + OptionsFrame->Destroy(); } break; case ID_PCB_LOOK_SETUP: { - WinEDA_DisplayOptionsDialog * OptionsFrame = - new WinEDA_DisplayOptionsDialog(this); - OptionsFrame->ShowModal(); OptionsFrame->Destroy(); + WinEDA_DisplayOptionsDialog* OptionsFrame = + new WinEDA_DisplayOptionsDialog( this ); + + OptionsFrame->ShowModal(); + OptionsFrame->Destroy(); } break; case ID_OPTIONS_SETUP: { - WinEDA_PcbGeneralOptionsFrame * OptionsFrame = - new WinEDA_PcbGeneralOptionsFrame(this, DC); - OptionsFrame->ShowModal(); OptionsFrame->Destroy(); + WinEDA_PcbGeneralOptionsFrame* OptionsFrame = + new WinEDA_PcbGeneralOptionsFrame( this, DC ); + + OptionsFrame->ShowModal(); + OptionsFrame->Destroy(); } break; } @@ -538,10 +663,10 @@ void WinEDA_PcbFrame::InstallPcbOptionsFrame(const wxPoint & pos, /*******************************************************************/ -void WinEDA_ModuleEditFrame::InstallOptionsFrame(const wxPoint & pos) +void WinEDA_ModuleEditFrame::InstallOptionsFrame( const wxPoint& pos ) /*******************************************************************/ { -WinEDA_GraphicItemsOptionsDialog OptionsFrame (this); + WinEDA_GraphicItemsOptionsDialog OptionsFrame( this ); + OptionsFrame.ShowModal(); } - diff --git a/pcbnew/edtxtmod.cpp b/pcbnew/edtxtmod.cpp index ed92e1767c..c5063eea11 100644 --- a/pcbnew/edtxtmod.cpp +++ b/pcbnew/edtxtmod.cpp @@ -20,7 +20,7 @@ static void Show_MoveTexte_Module( WinEDA_DrawPanel* panel, wxDC* DC, bool erase static void ExitTextModule( WinEDA_DrawPanel* Panel, wxDC* DC ); /* local variables */ -wxPoint MoveVector; // Move vector for move edge, exported to dialog_edit mod_text.cpp +wxPoint MoveVector; // Move vector for move edge, exported to dialog_edit mod_text.cpp static wxPoint CursorInitialPosition; // Mouse cursor inital position for move command @@ -74,14 +74,15 @@ void WinEDA_BasePcbFrame::RotateTextModule( TEXTE_MODULE* Text, wxDC* DC ) MODULE* module = (MODULE*) Text->m_Parent; - Text->Draw( DrawPanel, DC, GR_XOR ); + // we expect MoveVector to be (0,0) if there is no move in progress + Text->Draw( DrawPanel, DC, GR_XOR, MoveVector ); Text->m_Orient += 900; while( Text->m_Orient >= 1800 ) Text->m_Orient -= 1800; /* Redessin du Texte */ - Text->Draw( DrawPanel, DC, GR_XOR ); + Text->Draw( DrawPanel, DC, GR_XOR, MoveVector ); Text->Display_Infos( this ); @@ -107,10 +108,11 @@ void WinEDA_BasePcbFrame::DeleteTextModule( TEXTE_MODULE* Text, wxDC* DC ) if( Text->m_Type == TEXT_is_DIVERS ) { - Text->Draw( DrawPanel, DC, GR_XOR ); + // Text->Draw( DrawPanel, DC, GR_XOR ); + DrawPanel->PostDirtyRect( Text->GetBoundingBox() ); /* liberation de la memoire : */ - Text ->DeleteStructure(); + Text->DeleteStructure(); GetScreen()->SetModify(); Module->m_LastEdit_Time = time( NULL ); } @@ -137,10 +139,15 @@ static void ExitTextModule( WinEDA_DrawPanel* Panel, wxDC* DC ) return; Module = (MODULE*) Text->m_Parent; + Text->Draw( Panel, DC, GR_XOR, MoveVector ); /* Redessin du Texte */ - Text->Draw( Panel, DC, GR_OR ); + // Text->Draw( Panel, DC, GR_OR ); + Panel->PostDirtyRect( Text->GetBoundingBox() ); + + // leave it at (0,0) so we can use it Rotate when not moving. + MoveVector.x = MoveVector.y = 0; Text->m_Flags = 0; Module->m_Flags = 0; @@ -167,6 +174,7 @@ void WinEDA_BasePcbFrame::StartMoveTexteModule( TEXTE_MODULE* Text, wxDC* DC ) Module->m_Flags |= IN_EDIT; MoveVector.x = MoveVector.y = 0; + CursorInitialPosition = Text->m_Pos; Text->Display_Infos( this ); @@ -189,6 +197,8 @@ void WinEDA_BasePcbFrame::PlaceTexteModule( TEXTE_MODULE* Text, wxDC* DC ) { if( Text != NULL ) { + DrawPanel->PostDirtyRect( Text->GetBoundingBox() ); + Text->m_Pos = GetScreen()->m_Curseur; /* mise a jour des coordonnées relatives a l'ancre */ MODULE* Module = (MODULE*) Text->m_Parent; @@ -205,10 +215,14 @@ void WinEDA_BasePcbFrame::PlaceTexteModule( TEXTE_MODULE* Text, wxDC* DC ) GetScreen()->SetModify(); /* Redessin du Texte */ - Text->Draw( DrawPanel, DC, GR_OR ); + //Text->Draw( DrawPanel, DC, GR_OR ); + DrawPanel->PostDirtyRect( Text->GetBoundingBox() ); } } + // leave it at (0,0) so we can use it Rotate when not moving. + MoveVector.x = MoveVector.y = 0; + DrawPanel->ManageCurseur = NULL; DrawPanel->ForceCloseManageCurseur = NULL; } diff --git a/pcbnew/files.cpp b/pcbnew/files.cpp index 70be86ecbe..ad4c562aa8 100644 --- a/pcbnew/files.cpp +++ b/pcbnew/files.cpp @@ -34,42 +34,40 @@ void WinEDA_PcbFrame::Files_io( wxCommandEvent& event ) { case ID_MENU_LOAD_FILE: case ID_LOAD_FILE: - Clear_Pcb(TRUE ); - LoadOnePcbFile( wxEmptyString,FALSE ); + LoadOnePcbFile( wxEmptyString, false ); ReCreateAuxiliaryToolbar(); break; case ID_MENU_READ_LAST_SAVED_VERSION_BOARD: case ID_MENU_RECOVER_BOARD: - { - wxString filename, oldfilename = GetScreen()->m_FileName; - if( id == ID_MENU_RECOVER_BOARD ) { - filename = g_SaveFileName + PcbExtBuffer; - } - else - { - filename = oldfilename; - ChangeFileNameExt( filename, wxT( ".000" ) ); - } - if( !wxFileExists( filename ) ) - { - msg = _( "Recovery file " ) + filename + _( " not found" ); - DisplayInfo( this, msg ); - break; - } - else - { - msg = _( "Ok to load Recovery file " ) + filename; - if( !IsOK( this, msg ) ) + wxString filename, oldfilename = GetScreen()->m_FileName; + if( id == ID_MENU_RECOVER_BOARD ) + { + filename = g_SaveFileName + PcbExtBuffer; + } + else + { + filename = oldfilename; + ChangeFileNameExt( filename, wxT( ".000" ) ); + } + if( !wxFileExists( filename ) ) + { + msg = _( "Recovery file " ) + filename + _( " not found" ); + DisplayInfo( this, msg ); break; + } + else + { + msg = _( "Ok to load Recovery file " ) + filename; + if( !IsOK( this, msg ) ) + break; + } + LoadOnePcbFile( filename, false ); + GetScreen()->m_FileName = oldfilename; + SetTitle( GetScreen()->m_FileName ); + ReCreateAuxiliaryToolbar(); } - Clear_Pcb( TRUE ); - LoadOnePcbFile( filename, FALSE ); - GetScreen()->m_FileName = oldfilename; - SetTitle( GetScreen()->m_FileName ); - ReCreateAuxiliaryToolbar(); - } break; case ID_MENU_APPEND_FILE: @@ -95,7 +93,6 @@ void WinEDA_PcbFrame::Files_io( wxCommandEvent& event ) case ID_LOAD_FILE_8: case ID_LOAD_FILE_9: case ID_LOAD_FILE_10: - Clear_Pcb(TRUE ); wxSetWorkingDirectory( wxPathOnly( GetLastProject( id - ID_LOAD_FILE_1 ) ) ); LoadOnePcbFile( GetLastProject( id - ID_LOAD_FILE_1 ).GetData(), false ); @@ -153,10 +150,12 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append ) m_Pcb->m_Status_Pcb = 0; } + wxString fileName; + if( FullFileName == wxEmptyString ) { msg = wxT( "*" ) + PcbExtBuffer; - wxString FileName = + fileName = EDA_FileSelector( _( "Load board files:" ), wxEmptyString, /* Chemin par defaut */ GetScreen()->m_FileName, /* nom fichier par defaut */ @@ -166,15 +165,20 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append ) wxFD_OPEN, FALSE ); - if( FileName == wxEmptyString ) + + if( fileName == wxEmptyString ) return FALSE; - GetScreen()->m_FileName = FileName; } else - GetScreen()->m_FileName = FullFileName; + fileName = FullFileName; + + if( !Append ) + Clear_Pcb( false ); // pass false since we prompted above for a modified board + + GetScreen()->m_FileName = fileName; /* Start read PCB file - */ + */ source = wxFopen( GetScreen()->m_FileName, wxT( "rt" ) ); if( source == NULL ) @@ -202,7 +206,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append ) } else if ( ver < g_CurrentVersionPCB ) { - DisplayInfo( this, _( "This file was created by an older version of EESchema. It will be stored in the new file format when you save this file again.")); + DisplayInfo( this, _( "This file was created by an older version of PCBnew. It will be stored in the new file format when you save this file again.")); } SetTitle( GetScreen()->m_FileName ); @@ -242,7 +246,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append ) m_Pcb->Display_Infos( this ); DrawPanel->Refresh( true); - /* reset the auto save timer */ + /* reset the auto save timer */ g_SaveTime = time( NULL ); @@ -312,8 +316,8 @@ bool WinEDA_PcbFrame::SavePcbFile( const wxString& FileName ) ChangeFileNameExt( BackupFileName, wxT( ".000" ) ); /* If an old backup file exists, delete it. - if an old board file existes, rename it to the backup file name - */ + if an old board file existes, rename it to the backup file name + */ if( wxFileExists( FullFileName ) ) { /* rename the "old" file" from xxx.brd to xxx.000 */ diff --git a/pcbnew/initpcb.cpp b/pcbnew/initpcb.cpp index 3857c3da0b..bfea5cff95 100644 --- a/pcbnew/initpcb.cpp +++ b/pcbnew/initpcb.cpp @@ -139,6 +139,7 @@ bool WinEDA_BasePcbFrame::Clear_Pcb( bool query ) /* init pointeurs et variables */ GetScreen()->m_FileName.Empty(); + memset( buf_work, 0, BUFMEMSIZE ); adr_lowmem = adr_max = buf_work; diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index f354b85aac..af4b49ac16 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -369,7 +369,6 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) switch( m_ID_current_state ) { case ID_PCB_ZONES_BUTT: - { if( m_Pcb->m_ZoneDescriptorList.size() > 0 ) { ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_FILL_ALL_ZONES, @@ -380,11 +379,9 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_SELECT_LAYER, _( "Select Working Layer" ), Select_W_Layer_xpm ); aPopMenu->AppendSeparator(); - } break; case ID_TRACK_BUTT: - { ADD_MENUITEM_WITH_SUBMENU( aPopMenu, Append_Track_Width_List(), ID_POPUP_PCB_SELECT_WIDTH, _( "Select Track Width" ), width_track_xpm ); @@ -393,7 +390,6 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_SELECT_LAYER_PAIR, _( "Select layer pair for vias" ), select_layer_pair_xpm ); aPopMenu->AppendSeparator(); - } break; case ID_PCB_CIRCLE_BUTT: diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index fc88aee44b..a1b6647625 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -205,7 +205,8 @@ void WinEDA_PcbFrame::ReCreateHToolbar() wxString msg; if( m_HToolBar != NULL ) - { // simple mise a jour de la liste des fichiers anciens + { + // simple mise a jour de la liste des fichiers anciens wxMenuItem* item; for( ii = 9; ii >=0; ii-- ) { @@ -307,12 +308,12 @@ void WinEDA_PcbFrame::ReCreateHToolbar() m_HToolBar->AddTool( ID_TOOLBARH_PCB_AUTOROUTE, wxEmptyString, BITMAP( mode_track_xpm ), _( "Mode Track and Autorouting" ), wxITEM_CHECK ); - // Fast call to FreeROUTE Web Bases router + // Fast call to FreeROUTE Web Bases router m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, wxEmptyString, BITMAP( web_support_xpm ), _( "Fast access to theWeb Based FreeROUTE advanced routed" )); - - // after adding the buttons to the toolbar, must call Realize() to reflect + + // after adding the buttons to the toolbar, must call Realize() to reflect // the changes m_HToolBar->Realize(); @@ -630,10 +631,7 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) /**************************************************************************/ { int ii, jj, ll; - unsigned lenght = 0; - bool rebuild = FALSE; - long current_mask_layer; - + unsigned length = 0; if( m_SelLayerBox == NULL ) { if( parent == NULL ) @@ -655,27 +653,39 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) parent->AddControl( m_SelLayerBox ); } - // Test si reconstruction de la liste necessaire - current_mask_layer = 0; - int Masque_Layer = g_TabAllCopperLayerMask[g_DesignSettings.m_CopperLayerCount - 1]; - Masque_Layer |= ALL_NO_CU_LAYERS; + + int layer_mask = g_TabAllCopperLayerMask[g_DesignSettings.m_CopperLayerCount - 1]; + + layer_mask |= ALL_NO_CU_LAYERS; + + + // This is commented out because testing the number of layer is no longer + // sufficient since the layer names may also have changed. And the time + // required to test layer names is probably longer than the time required + // to simply reconstruct the list. +#if 0 + + // Test if reconstruction of the list is necessary + int current_layer_mask = 0; for( ii = 0; ii < (int) m_SelLayerBox->GetCount(); ii++ ) { jj = (int) ( (size_t) m_SelLayerBox->GetClientData( ii ) ); current_mask_layer |= g_TabOneLayerMask[jj]; } - if( current_mask_layer != Masque_Layer ) + bool rebuild = FALSE; + if( current_layer_mask != layer_mask ) rebuild = TRUE; // Construction de la liste if( rebuild ) +#endif { m_SelLayerBox->Clear(); for( ii = 0, jj = 0; ii <= EDGE_N; ii++ ) { // List to append hotkeys in layer box selection - static int HK_SwitchLayer[EDGE_N + 1] = { + static const int HK_SwitchLayer[EDGE_N + 1] = { HK_SWITCH_LAYER_TO_COPPER, HK_SWITCH_LAYER_TO_INNER1, HK_SWITCH_LAYER_TO_INNER2, @@ -694,20 +704,20 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) HK_SWITCH_LAYER_TO_COMPONENT }; - if( (g_TabOneLayerMask[ii] & Masque_Layer) ) + if( (g_TabOneLayerMask[ii] & layer_mask) ) { wxString msg = m_Pcb->GetLayerName( ii ); msg = AddHotkeyName( msg, s_Board_Editor_Hokeys_Descr, HK_SwitchLayer[ii] ); m_SelLayerBox->Append( msg ); m_SelLayerBox->SetClientData( jj, (void*) ii ); - lenght = max( lenght, msg.Len() ); + length = MAX( length, msg.Len() ); jj++; } } // Test me: // int lchar = m_SelLayerBox->GetFont().GetPointSize(); -// m_SelLayerBox->SetSize(wxSize(lenght * lchar,-1)); +// m_SelLayerBox->SetSize(wxSize(length * lchar,-1)); m_SelLayerBox->SetToolTip( _( "+/- to switch" ) ); }