Loading include/project.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -142,6 +142,8 @@ public: PCB_LIB_NICKNAME, PCB_LIB_NICKNAME, VIEWER_3D_PATH, VIEWER_3D_PATH, PCB_FOOTPRINT, PCB_FOOTPRINT, PCB_FOOTPRINT_VIEWER_FPNAME, PCB_FOOTPRINT_VIEWER_NICKNAME, RSTRING_COUNT RSTRING_COUNT }; }; Loading pcbnew/loadcmp.cpp +0 −1 Original line number Original line Diff line number Diff line Loading @@ -334,7 +334,6 @@ wxString PCB_BASE_FRAME::SelectFootprint( EDA_DRAW_FRAME* aWindow, wxString fpname; wxString fpname; wxString msg; wxString msg; wxArrayString libraries; wxArrayString libraries; FP_LIB_TABLE libTable; std::vector< wxArrayString > rows; std::vector< wxArrayString > rows; Loading pcbnew/modview_frame.cpp +85 −65 Original line number Original line Diff line number Diff line Loading @@ -60,16 +60,6 @@ #define PREVIOUS_PART -1 #define PREVIOUS_PART -1 /** * Save previous component library viewer state. */ wxString FOOTPRINT_VIEWER_FRAME::m_libraryName; wxString FOOTPRINT_VIEWER_FRAME::m_footprintName; /// When the viewer is used to select a component in schematic, the selected component is here. wxString FOOTPRINT_VIEWER_FRAME::m_selectedFootprintName; BEGIN_EVENT_TABLE( FOOTPRINT_VIEWER_FRAME, EDA_DRAW_FRAME ) BEGIN_EVENT_TABLE( FOOTPRINT_VIEWER_FRAME, EDA_DRAW_FRAME ) // Window events // Window events EVT_CLOSE( FOOTPRINT_VIEWER_FRAME::OnCloseWindow ) EVT_CLOSE( FOOTPRINT_VIEWER_FRAME::OnCloseWindow ) Loading Loading @@ -151,8 +141,6 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent m_footprintList = new wxListBox( this, ID_MODVIEW_FOOTPRINT_LIST, m_footprintList = new wxListBox( this, ID_MODVIEW_FOOTPRINT_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_HSCROLL ); wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_HSCROLL ); m_selectedFootprintName.Empty(); SetBoard( new BOARD() ); SetBoard( new BOARD() ); // Ensure all layers and items are visible: // Ensure all layers and items are visible: Loading @@ -173,12 +161,12 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent UpdateTitle(); UpdateTitle(); // If a footprint was previously loaded, reload it // If a footprint was previously loaded, reload it if( !m_libraryName.IsEmpty() && !m_footprintName.IsEmpty() ) if( getCurNickname().size() && getCurFootprintName().size() ) { { FPID id; FPID id; id.SetLibNickname( m_libraryName ); id.SetLibNickname( getCurNickname() ); id.SetFootprintName( m_footprintName ); id.SetFootprintName( getCurFootprintName() ); GetBoard()->Add( loadFootprint( id ) ); GetBoard()->Add( loadFootprint( id ) ); } } Loading Loading @@ -315,7 +303,7 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList() m_libList->Append( nicknames[ii] ); m_libList->Append( nicknames[ii] ); // Search for a previous selection: // Search for a previous selection: int index = m_libList->FindString( m_libraryName ); int index = m_libList->FindString( getCurNickname() ); if( index != wxNOT_FOUND ) if( index != wxNOT_FOUND ) { { Loading @@ -325,8 +313,8 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList() { { // If not found, clear current library selection because it can be // If not found, clear current library selection because it can be // deleted after a configuration change. // deleted after a configuration change. m_libraryName = wxEmptyString; setCurNickname( wxEmptyString ); m_footprintName = wxEmptyString; setCurFootprintName( wxEmptyString ); } } ReCreateFootprintList(); ReCreateFootprintList(); Loading @@ -340,15 +328,17 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList() { { m_footprintList->Clear(); m_footprintList->Clear(); if( m_libraryName.IsEmpty() ) if( !getCurNickname() ) { { m_footprintName = wxEmptyString; setCurFootprintName( wxEmptyString ); return; return; } } FOOTPRINT_LIST fp_info_list; FOOTPRINT_LIST fp_info_list; fp_info_list.ReadFootprintFiles( Prj().PcbFootprintLibs(), &m_libraryName ); wxString nickname = getCurNickname(); fp_info_list.ReadFootprintFiles( Prj().PcbFootprintLibs(), !nickname ? NULL : &nickname ); if( fp_info_list.GetErrorCount() ) if( fp_info_list.GetErrorCount() ) { { Loading @@ -361,10 +351,10 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList() m_footprintList->Append( footprint.GetFootprintName() ); m_footprintList->Append( footprint.GetFootprintName() ); } } int index = m_footprintList->FindString( m_footprintName ); int index = m_footprintList->FindString( getCurFootprintName() ); if( index == wxNOT_FOUND ) if( index == wxNOT_FOUND ) m_footprintName = wxEmptyString; setCurFootprintName( wxEmptyString ); else else m_footprintList->SetSelection( index, true ); m_footprintList->SetSelection( index, true ); } } Loading @@ -379,10 +369,10 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnLibList( wxCommandEvent& event ) wxString name = m_libList->GetString( ii ); wxString name = m_libList->GetString( ii ); if( m_libraryName == name ) if( getCurNickname() == name ) return; return; m_libraryName = name; setCurNickname( name ); ReCreateFootprintList(); ReCreateFootprintList(); UpdateTitle(); UpdateTitle(); Loading @@ -402,17 +392,18 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList( wxCommandEvent& event ) wxString name = m_footprintList->GetString( ii ); wxString name = m_footprintList->GetString( ii ); if( m_footprintName.CmpNoCase( name ) != 0 ) if( getCurFootprintName().CmpNoCase( name ) != 0 ) { { m_footprintName = name; setCurFootprintName( name ); SetCurItem( NULL ); SetCurItem( NULL ); // Delete the current footprint // Delete the current footprint GetBoard()->m_Modules.DeleteAll(); GetBoard()->m_Modules.DeleteAll(); FPID id; FPID id; id.SetLibNickname( m_libraryName ); id.SetLibNickname( getCurNickname() ); id.SetFootprintName( m_footprintName ); id.SetFootprintName( getCurFootprintName() ); try try { { Loading @@ -420,10 +411,12 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList( wxCommandEvent& event ) } } catch( const IO_ERROR& ioe ) catch( const IO_ERROR& ioe ) { { wxString msg; wxString msg = wxString::Format( msg.Printf( _( "Could not load footprint \"%s\" from library \"%s\".\n\n" _( "Could not load footprint \"%s\" from library \"%s\".\n\nError %s." ), "Error %s." ), GetChars( m_footprintName ), GetChars( m_libraryName ), GetChars( getCurFootprintName() ), GetChars( getCurNickname() ), GetChars( ioe.errorText ) ); GetChars( ioe.errorText ) ); DisplayError( this, msg ); DisplayError( this, msg ); } } Loading Loading @@ -466,19 +459,15 @@ void FOOTPRINT_VIEWER_FRAME::ExportSelectedFootprint( wxCommandEvent& event ) { { wxString fp_name = m_footprintList->GetString( ii ); wxString fp_name = m_footprintList->GetString( ii ); // @todo(DICK) assign to static now, later PROJECT retained string. m_selectedFootprintName = fp_name; FPID fpid; FPID fpid; fpid.SetLibNickname( GetSelectedLibrary() ); fpid.SetLibNickname( getCurNickname() ); fpid.SetFootprintName( fp_name ); fpid.SetFootprintName( fp_name ); DismissModal( true, fpid.Format() ); DismissModal( true, fpid.Format() ); } } else else { { m_selectedFootprintName.Empty(); DismissModal( false ); DismissModal( false ); } } Loading @@ -498,6 +487,30 @@ void FOOTPRINT_VIEWER_FRAME::SaveSettings( wxConfigBase* aCfg ) } } const wxString FOOTPRINT_VIEWER_FRAME::getCurNickname() { return Prj().GetRString( PROJECT::PCB_FOOTPRINT_VIEWER_NICKNAME ); } void FOOTPRINT_VIEWER_FRAME::setCurNickname( const wxString& aNickname ) { Prj().SetRString( PROJECT::PCB_FOOTPRINT_VIEWER_NICKNAME, aNickname ); } const wxString FOOTPRINT_VIEWER_FRAME::getCurFootprintName() { return Prj().GetRString( PROJECT::PCB_FOOTPRINT_VIEWER_FPNAME ); } void FOOTPRINT_VIEWER_FRAME::setCurFootprintName( const wxString& aName ) { Prj().SetRString( PROJECT::PCB_FOOTPRINT_VIEWER_FPNAME, aName ); } void FOOTPRINT_VIEWER_FRAME::OnActivate( wxActivateEvent& event ) void FOOTPRINT_VIEWER_FRAME::OnActivate( wxActivateEvent& event ) { { EDA_DRAW_FRAME::OnActivate( event ); EDA_DRAW_FRAME::OnActivate( event ); Loading @@ -506,8 +519,6 @@ void FOOTPRINT_VIEWER_FRAME::OnActivate( wxActivateEvent& event ) if( ! m_FrameIsActive ) if( ! m_FrameIsActive ) return; return; m_selectedFootprintName.Empty(); // Ensure we have the right library list: // Ensure we have the right library list: std::vector< wxString > libNicknames = Prj().PcbFootprintLibs()->GetLogicalLibs(); std::vector< wxString > libNicknames = Prj().PcbFootprintLibs()->GetLogicalLibs(); Loading Loading @@ -615,8 +626,10 @@ void FOOTPRINT_VIEWER_FRAME::Update3D_Frame( bool aForceReloadFootprint ) if( m_Draw3DFrame == NULL ) if( m_Draw3DFrame == NULL ) return; return; wxString frm3Dtitle; wxString frm3Dtitle = wxString::Format( frm3Dtitle.Printf( _( "ModView: 3D Viewer [%s]" ), GetChars( m_footprintName ) ); _( "ModView: 3D Viewer [%s]" ), GetChars( getCurFootprintName() ) ); m_Draw3DFrame->SetTitle( frm3Dtitle ); m_Draw3DFrame->SetTitle( frm3Dtitle ); if( aForceReloadFootprint ) if( aForceReloadFootprint ) Loading Loading @@ -675,8 +688,8 @@ void FOOTPRINT_VIEWER_FRAME::UpdateTitle() msg = _( "Library Browser" ); msg = _( "Library Browser" ); msg << wxT( " [" ); msg << wxT( " [" ); if( ! m_libraryName.IsEmpty() ) if( getCurNickname().size() ) msg << m_libraryName; msg << getCurNickname(); else else msg += _( "no library selected" ); msg += _( "no library selected" ); Loading @@ -688,16 +701,16 @@ void FOOTPRINT_VIEWER_FRAME::UpdateTitle() void FOOTPRINT_VIEWER_FRAME::SelectCurrentLibrary( wxCommandEvent& event ) void FOOTPRINT_VIEWER_FRAME::SelectCurrentLibrary( wxCommandEvent& event ) { { wxString selection = SelectLibrary( m_libraryName ); wxString selection = SelectLibrary( getCurNickname() ); if( !!selection && selection != m_libraryName ) if( !!selection && selection != getCurNickname() ) { { m_libraryName = selection; setCurNickname( selection ); UpdateTitle(); UpdateTitle(); ReCreateFootprintList(); ReCreateFootprintList(); int id = m_libList->FindString( m_libraryName ); int id = m_libList->FindString( getCurNickname() ); if( id >= 0 ) if( id >= 0 ) m_libList->SetSelection( id ); m_libList->SetSelection( id ); Loading @@ -714,9 +727,9 @@ void FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint( wxCommandEvent& event ) (void*) parent; (void*) parent; #endif #endif wxString libname = m_libraryName + wxT( "." ) + LegacyFootprintLibPathExtension; wxString nickname = getCurNickname(); MODULE* oldmodule = GetBoard()->m_Modules; MODULE* oldmodule = GetBoard()->m_Modules; MODULE* module = LoadModuleFromLibrary( libname, Prj().PcbFootprintLibs(), false ); MODULE* module = LoadModuleFromLibrary( nickname, Prj().PcbFootprintLibs(), false ); if( module ) if( module ) { { Loading @@ -729,31 +742,37 @@ void FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint( wxCommandEvent& event ) delete oldmodule; delete oldmodule; } } m_footprintName = FROM_UTF8( module->GetFPID().GetFootprintName().c_str() ); setCurFootprintName( module->GetFPID().GetFootprintName() ); wxString nickname = module->GetFPID().GetLibNickname(); if( !getCurNickname() && nickname.size() ) { // Set the listbox int index = m_libList->FindString( nickname ); if( index != wxNOT_FOUND ) m_libList->SetSelection( index, true ); setCurNickname( nickname ); } module->ClearFlags(); module->ClearFlags(); SetCurItem( NULL ); SetCurItem( NULL ); Zoom_Automatique( false ); Zoom_Automatique( false ); m_canvas->Refresh(); m_canvas->Refresh(); Update3D_Frame(); Update3D_Frame(); m_footprintList->SetStringSelection( m_footprintName ); m_footprintList->SetStringSelection( getCurFootprintName() ); } } } const wxString FOOTPRINT_VIEWER_FRAME::GetSelectedLibraryFullName( void ) { wxString fullname = m_libraryName + wxT( "." ) + LegacyFootprintLibPathExtension; return fullname; } } void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode ) void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode ) { { if( !m_libraryName ) if( !getCurNickname() ) return; return; int selection = m_footprintList->FindString( m_footprintName ); int selection = m_footprintList->FindString( getCurFootprintName() ); if( aMode == NEXT_PART ) if( aMode == NEXT_PART ) { { Loading @@ -770,13 +789,14 @@ void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode ) if( selection != wxNOT_FOUND ) if( selection != wxNOT_FOUND ) { { m_footprintList->SetSelection( selection ); m_footprintList->SetSelection( selection ); m_footprintName = m_footprintList->GetString( selection ); setCurFootprintName( m_footprintList->GetString( selection ) ); SetCurItem( NULL ); SetCurItem( NULL ); // Delete the current footprint // Delete the current footprint GetBoard()->m_Modules.DeleteAll(); GetBoard()->m_Modules.DeleteAll(); MODULE* footprint = Prj().PcbFootprintLibs()->FootprintLoad( m_libraryName, m_footprintName ); MODULE* footprint = Prj().PcbFootprintLibs()->FootprintLoad( getCurNickname(), getCurFootprintName() ); if( footprint ) if( footprint ) GetBoard()->Add( footprint, ADD_APPEND ); GetBoard()->Add( footprint, ADD_APPEND ); Loading pcbnew/modview_frame.h +4 −14 Original line number Original line Diff line number Diff line Loading @@ -59,15 +59,6 @@ public: */ */ static const wxChar* GetFootprintViewerFrameName(); static const wxChar* GetFootprintViewerFrameName(); wxString& GetSelectedFootprint( void ) const { return m_selectedFootprintName; } const wxString GetSelectedLibraryFullName(); /** * Function GetSelectedLibrary * @return the selected library name from the #FP_LIB_TABLE. */ const wxString& GetSelectedLibrary() { return m_libraryName; } virtual EDA_COLOR_T GetGridColor() const; virtual EDA_COLOR_T GetGridColor() const; /** /** Loading @@ -86,10 +77,11 @@ private: wxString m_configPath; // subpath for configuration wxString m_configPath; // subpath for configuration static wxString m_libraryName; // Current selected library const wxString getCurNickname(); static wxString m_footprintName; // Current selected footprint void setCurNickname( const wxString& aNickname ); static wxString m_selectedFootprintName; // When the viewer is used to select a footprint const wxString getCurFootprintName(); void setCurFootprintName( const wxString& aName ); void OnSize( wxSizeEvent& event ); void OnSize( wxSizeEvent& event ); Loading Loading @@ -123,8 +115,6 @@ private: void LoadSettings( wxConfigBase* aCfg ); // override virtual void LoadSettings( wxConfigBase* aCfg ); // override virtual void SaveSettings( wxConfigBase* aCfg ); // override virtual void SaveSettings( wxConfigBase* aCfg ); // override virtual wxString& GetFootprintName( void ) const { return m_footprintName; } /** /** * Function OnActivate * Function OnActivate * is called when the frame frame is activate to reload the libraries and component lists * is called when the frame frame is activate to reload the libraries and component lists Loading Loading
include/project.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -142,6 +142,8 @@ public: PCB_LIB_NICKNAME, PCB_LIB_NICKNAME, VIEWER_3D_PATH, VIEWER_3D_PATH, PCB_FOOTPRINT, PCB_FOOTPRINT, PCB_FOOTPRINT_VIEWER_FPNAME, PCB_FOOTPRINT_VIEWER_NICKNAME, RSTRING_COUNT RSTRING_COUNT }; }; Loading
pcbnew/loadcmp.cpp +0 −1 Original line number Original line Diff line number Diff line Loading @@ -334,7 +334,6 @@ wxString PCB_BASE_FRAME::SelectFootprint( EDA_DRAW_FRAME* aWindow, wxString fpname; wxString fpname; wxString msg; wxString msg; wxArrayString libraries; wxArrayString libraries; FP_LIB_TABLE libTable; std::vector< wxArrayString > rows; std::vector< wxArrayString > rows; Loading
pcbnew/modview_frame.cpp +85 −65 Original line number Original line Diff line number Diff line Loading @@ -60,16 +60,6 @@ #define PREVIOUS_PART -1 #define PREVIOUS_PART -1 /** * Save previous component library viewer state. */ wxString FOOTPRINT_VIEWER_FRAME::m_libraryName; wxString FOOTPRINT_VIEWER_FRAME::m_footprintName; /// When the viewer is used to select a component in schematic, the selected component is here. wxString FOOTPRINT_VIEWER_FRAME::m_selectedFootprintName; BEGIN_EVENT_TABLE( FOOTPRINT_VIEWER_FRAME, EDA_DRAW_FRAME ) BEGIN_EVENT_TABLE( FOOTPRINT_VIEWER_FRAME, EDA_DRAW_FRAME ) // Window events // Window events EVT_CLOSE( FOOTPRINT_VIEWER_FRAME::OnCloseWindow ) EVT_CLOSE( FOOTPRINT_VIEWER_FRAME::OnCloseWindow ) Loading Loading @@ -151,8 +141,6 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent m_footprintList = new wxListBox( this, ID_MODVIEW_FOOTPRINT_LIST, m_footprintList = new wxListBox( this, ID_MODVIEW_FOOTPRINT_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_HSCROLL ); wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_HSCROLL ); m_selectedFootprintName.Empty(); SetBoard( new BOARD() ); SetBoard( new BOARD() ); // Ensure all layers and items are visible: // Ensure all layers and items are visible: Loading @@ -173,12 +161,12 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent UpdateTitle(); UpdateTitle(); // If a footprint was previously loaded, reload it // If a footprint was previously loaded, reload it if( !m_libraryName.IsEmpty() && !m_footprintName.IsEmpty() ) if( getCurNickname().size() && getCurFootprintName().size() ) { { FPID id; FPID id; id.SetLibNickname( m_libraryName ); id.SetLibNickname( getCurNickname() ); id.SetFootprintName( m_footprintName ); id.SetFootprintName( getCurFootprintName() ); GetBoard()->Add( loadFootprint( id ) ); GetBoard()->Add( loadFootprint( id ) ); } } Loading Loading @@ -315,7 +303,7 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList() m_libList->Append( nicknames[ii] ); m_libList->Append( nicknames[ii] ); // Search for a previous selection: // Search for a previous selection: int index = m_libList->FindString( m_libraryName ); int index = m_libList->FindString( getCurNickname() ); if( index != wxNOT_FOUND ) if( index != wxNOT_FOUND ) { { Loading @@ -325,8 +313,8 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList() { { // If not found, clear current library selection because it can be // If not found, clear current library selection because it can be // deleted after a configuration change. // deleted after a configuration change. m_libraryName = wxEmptyString; setCurNickname( wxEmptyString ); m_footprintName = wxEmptyString; setCurFootprintName( wxEmptyString ); } } ReCreateFootprintList(); ReCreateFootprintList(); Loading @@ -340,15 +328,17 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList() { { m_footprintList->Clear(); m_footprintList->Clear(); if( m_libraryName.IsEmpty() ) if( !getCurNickname() ) { { m_footprintName = wxEmptyString; setCurFootprintName( wxEmptyString ); return; return; } } FOOTPRINT_LIST fp_info_list; FOOTPRINT_LIST fp_info_list; fp_info_list.ReadFootprintFiles( Prj().PcbFootprintLibs(), &m_libraryName ); wxString nickname = getCurNickname(); fp_info_list.ReadFootprintFiles( Prj().PcbFootprintLibs(), !nickname ? NULL : &nickname ); if( fp_info_list.GetErrorCount() ) if( fp_info_list.GetErrorCount() ) { { Loading @@ -361,10 +351,10 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList() m_footprintList->Append( footprint.GetFootprintName() ); m_footprintList->Append( footprint.GetFootprintName() ); } } int index = m_footprintList->FindString( m_footprintName ); int index = m_footprintList->FindString( getCurFootprintName() ); if( index == wxNOT_FOUND ) if( index == wxNOT_FOUND ) m_footprintName = wxEmptyString; setCurFootprintName( wxEmptyString ); else else m_footprintList->SetSelection( index, true ); m_footprintList->SetSelection( index, true ); } } Loading @@ -379,10 +369,10 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnLibList( wxCommandEvent& event ) wxString name = m_libList->GetString( ii ); wxString name = m_libList->GetString( ii ); if( m_libraryName == name ) if( getCurNickname() == name ) return; return; m_libraryName = name; setCurNickname( name ); ReCreateFootprintList(); ReCreateFootprintList(); UpdateTitle(); UpdateTitle(); Loading @@ -402,17 +392,18 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList( wxCommandEvent& event ) wxString name = m_footprintList->GetString( ii ); wxString name = m_footprintList->GetString( ii ); if( m_footprintName.CmpNoCase( name ) != 0 ) if( getCurFootprintName().CmpNoCase( name ) != 0 ) { { m_footprintName = name; setCurFootprintName( name ); SetCurItem( NULL ); SetCurItem( NULL ); // Delete the current footprint // Delete the current footprint GetBoard()->m_Modules.DeleteAll(); GetBoard()->m_Modules.DeleteAll(); FPID id; FPID id; id.SetLibNickname( m_libraryName ); id.SetLibNickname( getCurNickname() ); id.SetFootprintName( m_footprintName ); id.SetFootprintName( getCurFootprintName() ); try try { { Loading @@ -420,10 +411,12 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList( wxCommandEvent& event ) } } catch( const IO_ERROR& ioe ) catch( const IO_ERROR& ioe ) { { wxString msg; wxString msg = wxString::Format( msg.Printf( _( "Could not load footprint \"%s\" from library \"%s\".\n\n" _( "Could not load footprint \"%s\" from library \"%s\".\n\nError %s." ), "Error %s." ), GetChars( m_footprintName ), GetChars( m_libraryName ), GetChars( getCurFootprintName() ), GetChars( getCurNickname() ), GetChars( ioe.errorText ) ); GetChars( ioe.errorText ) ); DisplayError( this, msg ); DisplayError( this, msg ); } } Loading Loading @@ -466,19 +459,15 @@ void FOOTPRINT_VIEWER_FRAME::ExportSelectedFootprint( wxCommandEvent& event ) { { wxString fp_name = m_footprintList->GetString( ii ); wxString fp_name = m_footprintList->GetString( ii ); // @todo(DICK) assign to static now, later PROJECT retained string. m_selectedFootprintName = fp_name; FPID fpid; FPID fpid; fpid.SetLibNickname( GetSelectedLibrary() ); fpid.SetLibNickname( getCurNickname() ); fpid.SetFootprintName( fp_name ); fpid.SetFootprintName( fp_name ); DismissModal( true, fpid.Format() ); DismissModal( true, fpid.Format() ); } } else else { { m_selectedFootprintName.Empty(); DismissModal( false ); DismissModal( false ); } } Loading @@ -498,6 +487,30 @@ void FOOTPRINT_VIEWER_FRAME::SaveSettings( wxConfigBase* aCfg ) } } const wxString FOOTPRINT_VIEWER_FRAME::getCurNickname() { return Prj().GetRString( PROJECT::PCB_FOOTPRINT_VIEWER_NICKNAME ); } void FOOTPRINT_VIEWER_FRAME::setCurNickname( const wxString& aNickname ) { Prj().SetRString( PROJECT::PCB_FOOTPRINT_VIEWER_NICKNAME, aNickname ); } const wxString FOOTPRINT_VIEWER_FRAME::getCurFootprintName() { return Prj().GetRString( PROJECT::PCB_FOOTPRINT_VIEWER_FPNAME ); } void FOOTPRINT_VIEWER_FRAME::setCurFootprintName( const wxString& aName ) { Prj().SetRString( PROJECT::PCB_FOOTPRINT_VIEWER_FPNAME, aName ); } void FOOTPRINT_VIEWER_FRAME::OnActivate( wxActivateEvent& event ) void FOOTPRINT_VIEWER_FRAME::OnActivate( wxActivateEvent& event ) { { EDA_DRAW_FRAME::OnActivate( event ); EDA_DRAW_FRAME::OnActivate( event ); Loading @@ -506,8 +519,6 @@ void FOOTPRINT_VIEWER_FRAME::OnActivate( wxActivateEvent& event ) if( ! m_FrameIsActive ) if( ! m_FrameIsActive ) return; return; m_selectedFootprintName.Empty(); // Ensure we have the right library list: // Ensure we have the right library list: std::vector< wxString > libNicknames = Prj().PcbFootprintLibs()->GetLogicalLibs(); std::vector< wxString > libNicknames = Prj().PcbFootprintLibs()->GetLogicalLibs(); Loading Loading @@ -615,8 +626,10 @@ void FOOTPRINT_VIEWER_FRAME::Update3D_Frame( bool aForceReloadFootprint ) if( m_Draw3DFrame == NULL ) if( m_Draw3DFrame == NULL ) return; return; wxString frm3Dtitle; wxString frm3Dtitle = wxString::Format( frm3Dtitle.Printf( _( "ModView: 3D Viewer [%s]" ), GetChars( m_footprintName ) ); _( "ModView: 3D Viewer [%s]" ), GetChars( getCurFootprintName() ) ); m_Draw3DFrame->SetTitle( frm3Dtitle ); m_Draw3DFrame->SetTitle( frm3Dtitle ); if( aForceReloadFootprint ) if( aForceReloadFootprint ) Loading Loading @@ -675,8 +688,8 @@ void FOOTPRINT_VIEWER_FRAME::UpdateTitle() msg = _( "Library Browser" ); msg = _( "Library Browser" ); msg << wxT( " [" ); msg << wxT( " [" ); if( ! m_libraryName.IsEmpty() ) if( getCurNickname().size() ) msg << m_libraryName; msg << getCurNickname(); else else msg += _( "no library selected" ); msg += _( "no library selected" ); Loading @@ -688,16 +701,16 @@ void FOOTPRINT_VIEWER_FRAME::UpdateTitle() void FOOTPRINT_VIEWER_FRAME::SelectCurrentLibrary( wxCommandEvent& event ) void FOOTPRINT_VIEWER_FRAME::SelectCurrentLibrary( wxCommandEvent& event ) { { wxString selection = SelectLibrary( m_libraryName ); wxString selection = SelectLibrary( getCurNickname() ); if( !!selection && selection != m_libraryName ) if( !!selection && selection != getCurNickname() ) { { m_libraryName = selection; setCurNickname( selection ); UpdateTitle(); UpdateTitle(); ReCreateFootprintList(); ReCreateFootprintList(); int id = m_libList->FindString( m_libraryName ); int id = m_libList->FindString( getCurNickname() ); if( id >= 0 ) if( id >= 0 ) m_libList->SetSelection( id ); m_libList->SetSelection( id ); Loading @@ -714,9 +727,9 @@ void FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint( wxCommandEvent& event ) (void*) parent; (void*) parent; #endif #endif wxString libname = m_libraryName + wxT( "." ) + LegacyFootprintLibPathExtension; wxString nickname = getCurNickname(); MODULE* oldmodule = GetBoard()->m_Modules; MODULE* oldmodule = GetBoard()->m_Modules; MODULE* module = LoadModuleFromLibrary( libname, Prj().PcbFootprintLibs(), false ); MODULE* module = LoadModuleFromLibrary( nickname, Prj().PcbFootprintLibs(), false ); if( module ) if( module ) { { Loading @@ -729,31 +742,37 @@ void FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint( wxCommandEvent& event ) delete oldmodule; delete oldmodule; } } m_footprintName = FROM_UTF8( module->GetFPID().GetFootprintName().c_str() ); setCurFootprintName( module->GetFPID().GetFootprintName() ); wxString nickname = module->GetFPID().GetLibNickname(); if( !getCurNickname() && nickname.size() ) { // Set the listbox int index = m_libList->FindString( nickname ); if( index != wxNOT_FOUND ) m_libList->SetSelection( index, true ); setCurNickname( nickname ); } module->ClearFlags(); module->ClearFlags(); SetCurItem( NULL ); SetCurItem( NULL ); Zoom_Automatique( false ); Zoom_Automatique( false ); m_canvas->Refresh(); m_canvas->Refresh(); Update3D_Frame(); Update3D_Frame(); m_footprintList->SetStringSelection( m_footprintName ); m_footprintList->SetStringSelection( getCurFootprintName() ); } } } const wxString FOOTPRINT_VIEWER_FRAME::GetSelectedLibraryFullName( void ) { wxString fullname = m_libraryName + wxT( "." ) + LegacyFootprintLibPathExtension; return fullname; } } void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode ) void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode ) { { if( !m_libraryName ) if( !getCurNickname() ) return; return; int selection = m_footprintList->FindString( m_footprintName ); int selection = m_footprintList->FindString( getCurFootprintName() ); if( aMode == NEXT_PART ) if( aMode == NEXT_PART ) { { Loading @@ -770,13 +789,14 @@ void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode ) if( selection != wxNOT_FOUND ) if( selection != wxNOT_FOUND ) { { m_footprintList->SetSelection( selection ); m_footprintList->SetSelection( selection ); m_footprintName = m_footprintList->GetString( selection ); setCurFootprintName( m_footprintList->GetString( selection ) ); SetCurItem( NULL ); SetCurItem( NULL ); // Delete the current footprint // Delete the current footprint GetBoard()->m_Modules.DeleteAll(); GetBoard()->m_Modules.DeleteAll(); MODULE* footprint = Prj().PcbFootprintLibs()->FootprintLoad( m_libraryName, m_footprintName ); MODULE* footprint = Prj().PcbFootprintLibs()->FootprintLoad( getCurNickname(), getCurFootprintName() ); if( footprint ) if( footprint ) GetBoard()->Add( footprint, ADD_APPEND ); GetBoard()->Add( footprint, ADD_APPEND ); Loading
pcbnew/modview_frame.h +4 −14 Original line number Original line Diff line number Diff line Loading @@ -59,15 +59,6 @@ public: */ */ static const wxChar* GetFootprintViewerFrameName(); static const wxChar* GetFootprintViewerFrameName(); wxString& GetSelectedFootprint( void ) const { return m_selectedFootprintName; } const wxString GetSelectedLibraryFullName(); /** * Function GetSelectedLibrary * @return the selected library name from the #FP_LIB_TABLE. */ const wxString& GetSelectedLibrary() { return m_libraryName; } virtual EDA_COLOR_T GetGridColor() const; virtual EDA_COLOR_T GetGridColor() const; /** /** Loading @@ -86,10 +77,11 @@ private: wxString m_configPath; // subpath for configuration wxString m_configPath; // subpath for configuration static wxString m_libraryName; // Current selected library const wxString getCurNickname(); static wxString m_footprintName; // Current selected footprint void setCurNickname( const wxString& aNickname ); static wxString m_selectedFootprintName; // When the viewer is used to select a footprint const wxString getCurFootprintName(); void setCurFootprintName( const wxString& aName ); void OnSize( wxSizeEvent& event ); void OnSize( wxSizeEvent& event ); Loading Loading @@ -123,8 +115,6 @@ private: void LoadSettings( wxConfigBase* aCfg ); // override virtual void LoadSettings( wxConfigBase* aCfg ); // override virtual void SaveSettings( wxConfigBase* aCfg ); // override virtual void SaveSettings( wxConfigBase* aCfg ); // override virtual wxString& GetFootprintName( void ) const { return m_footprintName; } /** /** * Function OnActivate * Function OnActivate * is called when the frame frame is activate to reload the libraries and component lists * is called when the frame frame is activate to reload the libraries and component lists Loading