SCH_BASE_FRAME::COMPONENT_SELECTION SCH_BASE_FRAME::SelectComponentFromLibBrowser( wxTopLevelWindow* aParent, const SCHLIB_FILTER* aFilter, const LIB_ID& aPreselectedLibId, int aUnit, int aConvert ) { // Close any open non-modal Lib browser, and open a new one, in "modal" mode: LIB_VIEW_FRAME* viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, false ); if( viewlibFrame ) viewlibFrame->Destroy(); viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER_MODAL, true, aParent ); if( aFilter ) viewlibFrame->SetFilter( aFilter ); if( aPreselectedLibId.IsValid() ) { viewlibFrame->SetSelectedLibrary( aPreselectedLibId.GetLibNickname() ); viewlibFrame->SetSelectedComponent( aPreselectedLibId.GetLibItemName() ); } viewlibFrame->SetUnitAndConvert( aUnit, aConvert ); viewlibFrame->Refresh(); COMPONENT_SELECTION sel; wxString symbol = sel.LibId.Format(); if( viewlibFrame->ShowModal( &symbol, aParent ) ) { LIB_ID id; if( id.Parse( symbol, LIB_ID::ID_SCH ) == -1 ) sel.LibId = id; sel.Unit = viewlibFrame->GetUnit(); sel.Convert = viewlibFrame->GetConvert(); } viewlibFrame->Destroy(); return sel; }
wxString SCH_BASE_FRAME::SelectComponentFromLibBrowser( LIB_ALIAS* aPreselectedAlias, int* aUnit, int* aConvert ) { // Close any open non-modal Lib browser, and open a new one, in "modal" mode: LIB_VIEW_FRAME* viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, false ); if( viewlibFrame ) viewlibFrame->Destroy(); viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER_MODAL, true ); if( aPreselectedAlias ) { viewlibFrame->SetSelectedLibrary( aPreselectedAlias->GetLibraryName() ); viewlibFrame->SetSelectedComponent( aPreselectedAlias->GetName() ); } if( aUnit && *aUnit > 0 ) viewlibFrame->SetUnit( *aUnit ); if( aConvert && *aConvert > 0 ) viewlibFrame->SetConvert( *aConvert ); viewlibFrame->Refresh(); wxString cmpname; if( viewlibFrame->ShowModal( &cmpname, this ) ) { if( aUnit ) *aUnit = viewlibFrame->GetUnit(); if( aConvert ) *aConvert = viewlibFrame->GetConvert(); } viewlibFrame->Destroy(); return cmpname; }