Loading eeschema/dialogs/dialog_choose_component.cpp +60 −11 Original line number Original line Diff line number Diff line Loading @@ -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 ) Loading Loading @@ -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(); Loading @@ -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 ); } } } Loading @@ -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(); Loading Loading @@ -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; } } Loading Loading
eeschema/dialogs/dialog_choose_component.cpp +60 −11 Original line number Original line Diff line number Diff line Loading @@ -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 ) Loading Loading @@ -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(); Loading @@ -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 ); } } } Loading @@ -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(); Loading Loading @@ -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; } } Loading