Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}