Commit ef2337ca authored by John Beard's avatar John Beard Committed by Wayne Stambaugh
Browse files

Improve alias handling in component chooser dialog.

parent a398d459
Loading
Loading
Loading
Loading
+60 −11
Original line number Original line Diff line number Diff line
@@ -114,7 +114,7 @@ void DIALOG_CHOOSE_COMPONENT::OnInterceptSearchBoxKey( wxKeyEvent& aKeyStroke )
        selectIfValid( GetNextItem( *m_libraryComponentTree, sel ) );
        selectIfValid( GetNextItem( *m_libraryComponentTree, sel ) );
        break;
        break;


        // The follwoing keys we can only hijack if they are not needed by the textbox itself.
        // The following keys we can only hijack if they are not needed by the textbox itself.


    case WXK_LEFT:
    case WXK_LEFT:
        if( m_searchBox->GetInsertionPoint() == 0 )
        if( m_searchBox->GetInsertionPoint() == 0 )
@@ -219,27 +219,54 @@ bool DIALOG_CHOOSE_COMPONENT::updateSelection()
    wxTextAttr text_attribute;
    wxTextAttr text_attribute;
    text_attribute.SetFont( font_normal );
    text_attribute.SetFont( font_normal );


    const wxString name = selection->GetName();

    if ( !name.empty() )
    {
        m_componentDetails->SetDefaultStyle( headline_attribute );
        m_componentDetails->AppendText( name );
    }

    const wxString description = selection->GetDescription();
    const wxString description = selection->GetDescription();


    if( !description.empty() )
    if( !description.empty() )
    {
    {
        if ( !m_componentDetails->IsEmpty() )
            m_componentDetails->AppendText( wxT( "\n\n" ) );

        m_componentDetails->SetDefaultStyle( headline_attribute );
        m_componentDetails->SetDefaultStyle( headline_attribute );
        m_componentDetails->AppendText( _( "Description\n" ) );
        m_componentDetails->AppendText( _( "Description\n" ) );
        m_componentDetails->SetDefaultStyle( text_attribute );
        m_componentDetails->SetDefaultStyle( text_attribute );
        m_componentDetails->AppendText( description );
        m_componentDetails->AppendText( description );
        m_componentDetails->AppendText( wxT("\n\n") );
    }
    }


    const wxString keywords = selection->GetKeyWords();
    const wxString keywords = selection->GetKeyWords();


    if( !keywords.empty() )
    if( !keywords.empty() )
    {
    {
        if ( !m_componentDetails->IsEmpty() )
            m_componentDetails->AppendText( wxT( "\n\n" ) );

        m_componentDetails->SetDefaultStyle( headline_attribute );
        m_componentDetails->SetDefaultStyle( headline_attribute );
        m_componentDetails->AppendText( _( "Keywords\n" ) );
        m_componentDetails->AppendText( _( "Keywords\n" ) );
        m_componentDetails->SetDefaultStyle( text_attribute );
        m_componentDetails->SetDefaultStyle( text_attribute );
        m_componentDetails->AppendText( keywords );
        m_componentDetails->AppendText( keywords );
    }
    }


    if ( !selection->IsRoot() )
    {
        LIB_PART* root_part = selection->GetPart();
        const wxString root_component_name( root_part ? root_part->GetName() : _( "Unknown" ) );

        if ( !m_componentDetails->IsEmpty() )
            m_componentDetails->AppendText( wxT( "\n\n" ) );

        m_componentDetails->SetDefaultStyle( headline_attribute );
        m_componentDetails->AppendText( _( "Alias of " ) );
        m_componentDetails->SetDefaultStyle( text_attribute );
        m_componentDetails->AppendText( root_component_name );
    }

    m_componentDetails->SetInsertionPoint( 0 );  // scroll up.
    m_componentDetails->SetInsertionPoint( 0 );  // scroll up.
    m_componentDetails->Thaw();
    m_componentDetails->Thaw();


@@ -251,8 +278,28 @@ void DIALOG_CHOOSE_COMPONENT::OnHandlePreviewRepaint( wxPaintEvent& aRepaintEven
{
{
    int unit = 0;
    int unit = 0;
    LIB_ALIAS*  selection = m_search_container->GetSelectedAlias( &unit );
    LIB_ALIAS*  selection = m_search_container->GetSelectedAlias( &unit );
    LIB_PART*   part = selection ? selection->GetPart() : NULL;

    // Don't draw anything (not even the background) if we don't have
    // a part to show
    if( !part )
        return;

    if( selection->IsRoot() )
    {
        // just show the part directly
        renderPreview( part, unit );
    }
    else
    {
        // switch out the name temporarily for the alias name
        wxString tmp( part->GetName() );
        part->SetName( selection->GetName() );

        renderPreview( part, unit );


    renderPreview( selection ? selection->GetPart() : NULL, unit );
        part->SetName( tmp );
    }
}
}




@@ -262,6 +309,7 @@ void DIALOG_CHOOSE_COMPONENT::renderPreview( LIB_PART* aComponent, int aUni
{
{
    wxPaintDC dc( m_componentView );
    wxPaintDC dc( m_componentView );
    EDA_COLOR_T bgcolor = m_parent->GetDrawBgColor();
    EDA_COLOR_T bgcolor = m_parent->GetDrawBgColor();

    dc.SetBackground( bgcolor == BLACK ? *wxBLACK_BRUSH : *wxWHITE_BRUSH );
    dc.SetBackground( bgcolor == BLACK ? *wxBLACK_BRUSH : *wxWHITE_BRUSH );
    dc.Clear();
    dc.Clear();


@@ -323,6 +371,7 @@ static wxTreeItemId GetNextItem( const wxTreeCtrl& tree, const wxTreeItemId& ite
        for ( wxTreeItemId walk = item; walk.IsOk(); walk = tree.GetItemParent( walk ) )
        for ( wxTreeItemId walk = item; walk.IsOk(); walk = tree.GetItemParent( walk ) )
        {
        {
            nextItem = tree.GetNextSibling( walk );
            nextItem = tree.GetNextSibling( walk );

            if( nextItem.IsOk() )
            if( nextItem.IsOk() )
                break;
                break;
        }
        }